Inhoudsopgave:

HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels - Ajarnpa
HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels - Ajarnpa

Video: HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels - Ajarnpa

Video: HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels - Ajarnpa
Video: DIY HALO Lamp Rev1.0 - Powered by Arduino Nano, 15+ Color Modes 2024, September
Anonim
Image
Image
HALO: Handige Arduino Lamp Rev1.0 W/NeoPixels
HALO: Handige Arduino Lamp Rev1.0 W/NeoPixels
HALO: Handige Arduino Lamp Rev1.0 W/NeoPixels
HALO: Handige Arduino Lamp Rev1.0 W/NeoPixels

In deze instructable laat ik je zien hoe je HALO of Handy Arduino Lamp Rev1.0 kunt bouwen.

HALO is een eenvoudige lamp, aangedreven door Arduino Nano. Het heeft een totale voetafdruk van ongeveer 2 "bij 3" en een verzwaarde houten basis voor extreme stabiliteit. Dankzij de flexibele hals en 12 superheldere NeoPixels kan hij elk detail op elk oppervlak gemakkelijk verlichten. HALO heeft twee drukknoppen om door verschillende lichtmodi te bladeren, waarvan er 15 voorgeprogrammeerd zijn. Door het gebruik van de Arduino Nano als processor, is er de mogelijkheid om hem te herprogrammeren met extra functies. De enkele potentiometer wordt gebruikt om de helderheid en/of snelheid aan te passen waarmee een modus wordt weergegeven. Een eenvoudige metalen constructie maakt HALO tot een zeer duurzame lamp, geschikt voor gebruik in elke werkplaats. Het gebruiksgemak wordt verergerd door de ingebouwde stroomregelaar van de Nano, zodat HALO kan worden gevoed via USB of de standaard 5 mm barrel-aansluiting aan de achterkant.

Ik hoop in de nabije toekomst veel mensen deze lampen te zien gebruiken, want er zijn zoveel mogelijkheden die zich openen met dit ontwerp. Laat alsjeblieft een stem achter in de Microcontroller Contest als je dit leuk vindt of het op de een of andere manier nuttig vindt, ik zou het erg op prijs stellen.

Voordat we ingaan op deze Instructable, zou ik graag een kort woord van dank willen zeggen aan al mijn volgers en iedereen die ooit commentaar heeft gegeven, een favoriet heeft gemaakt of op een van mijn projecten heeft gestemd. Dankzij jullie werd mijn Cardboard-instructie een enorm succes, en ik ben nu, op het moment dat ik dit typ, bijna 100 volgers bereikt, naar mijn mening een grote mijlpaal. Ik waardeer echt alle steun die ik van jullie krijg als ik mijn Ible's ophang, en als het erop aankomt, zou ik niet zijn waar ik nu ben zonder jullie. Dat gezegd hebbende, bedankt iedereen!

OPMERKING: Gedurende deze Instructable zijn zinnen vetgedrukt. Dit zijn de belangrijke onderdelen van elke stap en mogen niet worden genegeerd. Dit is niet dat ik schreeuw of opzettelijk onbeleefd ben, ik probeer gewoon een nieuwe schrijftechniek om beter te benadrukken wat er moet gebeuren. Als je het niet leuk vindt en de voorkeur geeft aan hoe ik eerder de neiging had om mijn stappen te schrijven, laat het me dan weten in de reacties en ik schakel terug naar mijn oude stijl.

Stap 1: Materialen verzamelen

Materiaal verzamelen
Materiaal verzamelen
Materiaal verzamelen
Materiaal verzamelen
Materiaal verzamelen
Materiaal verzamelen
Materiaal verzamelen
Materiaal verzamelen

Hoe vaak moet ik het nog zeggen? Altijd hebben wat je nodig hebt, en je kunt gegarandeerd iets tot het einde opbouwen.

Opmerking: sommige hiervan zijn gelieerde links (gemarkeerd met "al"), ik krijg een kleine smeergeld als je via hen koopt, zonder extra kosten voor jou. Bedankt als je via de links koopt

Onderdelen:

1x Arduino Nano Nano - al

1x 10k Roterende Potentiometer 5 pak 10k Potentiometers - al

1x 5mm barrel jack (de mijne is gerecycled van een gebakken Arduino Uno) Female Barrel Jack (5 pack) - al

2x 2-pins kortstondige drukknoppen 10-pack SPST-drukknopschakelaar - al

12x NeoPixels van een streng van 60 LED/meter (elk equivalent, bijv. WS2812B, zal werken) Adafruit NeoPixels

Een plaat van 0,5 mm aluminium

De flexibele hals van een oude flexaansteker

De bovenste afdekring van een "Stick and Click" LED-kastverlichting LED-kastverlichting - al

Een klein velletje 1/4 inch multiplex

Een zwaar, plat metalen gewicht van afmetingen (ongeveer) 1,5 "bij 2,5" bij 0,25"

Gestrande elektrische draad met kern

Gereedschap:

Heet lijmpistool en lijm

Soldeerbout en soldeer

Accuboormachine en diverse kleine twistbits

X-acto mes (of een mes)

Draadstrippers

Tang

Draadknippers/knipsels

Zware schaar

Als je het platte metalen gewicht niet hebt, heb je ook nodig:

1 rol goedkoop soldeer (niet het spul dat je gaat gebruiken om te solderen) Goedkoop loodvrij soldeer

Alcoholkaars (of een bunsenbrander)

Een kleine, geharde stalen schaal die je niet erg vindt om te verpesten (of een kleine smeltkroes als je die hebt)

Een statief voor genoemde schotel / smeltkroes (ik heb de mijne gemaakt van 12 gauge staaldraad)

Een plantenschaal van klei (een van die dingetjes die onder de pot gaat)

Wat aluminiumfolie

OPMERKING: Als u een lasset of een 3D-printer heeft, heeft u mogelijk niet alle hier vermelde gereedschappen nodig.

Stap 2: Het gewicht maken

Het gewicht maken
Het gewicht maken
Het gewicht maken
Het gewicht maken
Het gewicht maken
Het gewicht maken

Dit is een vrij moeilijke stap en u moet uiterst voorzichtig zijn. Als je een zwaar metalen gewicht of een platte neodymiummagneet hebt van ongeveer 2,75" bij 1,75" bij 0,25", zou ik aanraden om die in plaats daarvan te gebruiken (en met de magneet kun je de lamp zelfs zijwaarts op metalen oppervlakken plaatsen!).

Disclaimer: ik ben niet verantwoordelijk voor eventuele schade van uw kant, dus gebruik uw gezond verstand

Doe dit ook buiten op een betonnen oppervlak dat je niet erg vindt als het een beetje verschroeid (dit is slechts een voorzorgsmaatregel). Ik heb geen foto's voor dit proces omdat een camera een extra afleiding zou zijn geweest die ik niet nodig had of wilde.

Maak eerst een kleine mal van aluminiumfolie of natte klei, ongeveer 2 3/4 inch bij 1 3/4 inch bij 1/4 inch in binnenafmetingen. Het kan een eivormige vorm zijn zoals de mijne, of een rechthoek. Gebruik meerdere lagen folie of dikke lagen klei.

Plaats de vorm in de keramische plantenschaal en vul zowel de vorm als de bak met koud water.

Neem je onverlichte alcoholkaars/bunsenbrander en plaats de stalen schaal/kroes op het statief zodat de vlam het midden van de schaal verwarmt (wanneer aangestoken). Voordat u de brander aansteekt, moet u ervoor zorgen dat u ten minste 1 tang of metaalbewerkingstang bij de hand heeft, zo niet 2.

Het is een goed idee om tijdens de volgende stappen leren handschoenen, lange mouwen, lange broeken, schoenen met gesloten neus en oogbescherming te dragen

Rol op en breek een bosje van het goedkope soldeer van de spoel af en plaats het in de stalen schaal, steek dan de brander aan. Wacht tot de spoel volledig is gesmolten en voer vervolgens de rest van het soldeer in een gematigd tempo in de schaal. Als er hars in het soldeer zit, kan dit spontaan ontbranden in de hitte, waardoor een lichtgele vlam en zwarte rook ontstaat. Maak je geen zorgen, dit is mij meerdere keren overkomen en is volkomen normaal.

Blijf het soldeer in de schaal voeren totdat het laatste is gesmolten.

Laat alle vlammen van brandende hars volledig uitdoven en gebruik de tang/tang om de schaal vast te pakken en het gesmolten metaal voorzichtig naar binnen te draaien terwijl u het voorzichtig in de vlam houdt.

Nadat u zeker weet dat al het soldeer volledig vloeibaar is en op een goede hete temperatuur is, verwijdert u het snel en voorzichtig van de vlam en giet u het in de mal. Er zal een luid sissend geluid en stoom zijn als een deel van het water verdampt en de rest uit de mal wordt geperst om te worden vervangen door gesmolten soldeer.

Laat het soldeer afkoelen, zet je brander uit / blaas je kaars uit en plaats de stalen schaal op een veilige plek om af te koelen. Misschien wilt u koud water over het koelsoldeer gieten om het afkoelen te versnellen en het verder uit te harden. (Het koude water zorgt ervoor dat de buitenkant sneller afkoelt dan de binnenkant, waardoor er interne spanning ontstaat die het metaal harder en stijver maakt, vergelijkbaar met een Prince Rupert's Drop.) Je kunt ook water over je metalen schaal laten lopen, maar dan wordt deze broos, vooral als het meerdere keren wordt gedaan.

Nadat het soldeer volledig is afgekoeld (ongeveer 20 minuten om veilig te zijn), verwijdert u het uit de folievorm.

De mijne werd aan de ene kant dikker dan de andere, dus ik gebruikte een hamer om het gelijk te maken en de randen plat te maken (resulterend in de vorm die je op de foto's ziet). Ik heb het vervolgens licht geschuurd onder stromend water om het te polijsten en opzij te leggen voor later.

Stap 3: De elektronicabehuizing bouwen, stap 1

De elektronicabehuizing bouwen, stap 1
De elektronicabehuizing bouwen, stap 1
De elektronicabehuizing bouwen, stap 1
De elektronicabehuizing bouwen, stap 1
De elektronicabehuizing bouwen, stap 1
De elektronicabehuizing bouwen, stap 1
De elektronicabehuizing bouwen, stap 1
De elektronicabehuizing bouwen, stap 1

Dit zijn de onderdelen voor de schaal die de Nano zal huisvesten, de interface zal monteren en in feite de HALO-lamp bij elkaar houdt. Ik heb de mijne gemaakt met mijn 0,5 mm aluminium en Hot Glue, maar als je een 3D-printer hebt (iets wat ik al een tijdje probeer te krijgen voor mijn winkel), heb ik een. STL-versie gemaakt in Tinkercad die ik hier voor je heb toegevoegd downloaden. Aangezien ik zelf geen printer heb, kon ik het model niet testen om te zien of alles goed print, maar ik denk dat het wel goed zou moeten zijn als je de juiste ondersteuningsstructuren in je slicer toevoegt. U kunt het bronbestand hier ook kopiëren en bewerken als u een iets ander ontwerp of esthetiek nodig heeft of wilt.

De afmetingen zijn eigenlijk afgeleid van het metalen gewicht dat ik voor mezelf uit soldeer heb gegoten, niet van de grootte van de elektronica, maar het bleek toch best goed te zijn en de afmetingen zijn redelijk optimaal.

De foto's laten een iets andere volgorde zien van wat ik hier zal schrijven, dit komt omdat ik een verbeterde methode heb bedacht op basis van de resultaten van mijn oorspronkelijke methode.

Als je net als ik uit plaatwerk monteert, moet je het volgende doen:

Stap 1: Gezichtsplaten

Snijd twee identieke halve cirkel-achtige vormen van ongeveer 1,5 "lang en 3" breed. (Ik heb de mijne uit de vrije hand, dus ze lijken een beetje op de voorkant van een jukebox).

Boor in een van de twee platen de drie gaten voor de knoppen en potmeter. De mijne waren elk 1/4 inch in diameter. Deze kunnen in elke lay-out zijn, maar ik heb liever dat mijn potentiometer iets verhoogd is in het midden, met de knoppen aan weerszijden die een gelijkbenige driehoek vormen. Bij het boren maak ik altijd een klein geleidegat voordat ik naar het vereiste bit ga, het helpt de gaten te centreren en maakt ze een beetje schoner.

Stap 2: gebogen deksel

Buig over een stuk aluminium om rond de ronding van een van de voorplaten te passen en markeer de juiste randlengte.

Knip een strook van deze lengte en ongeveer 2 inch breed uit en vorm deze in een boog die overeenkomt met de vorm van de curve van de voorplaten aan weerszijden.

Zoek het middelpunt in de bovenkant van de curve en boor een gat om in de flexibele hals van de aansteker te passen. Ik heb het gat naar achteren in de mijne gecompenseerd omdat mijn lamp meestal de nek naar voren zal kantelen tijdens gebruik, dus ik wilde daar een beetje tegenwicht aan toevoegen. Mijn flexibele nek had een diameter van net iets meer dan 1/4 inch, dus ik gebruikte een 1/4 inch bit (het grootste twistbit dat ik bezit dat minder dan 3/4 inch is) en ik heb het voorzichtig gebogen en gedraaid boor om het gat te 'boren' totdat de nek past.

Nu we de onderdelen voor de schaal hebben, is de volgende stap om elektronica toe te voegen en in elkaar te zetten!

Stap 4: De elektronicabehuizing bouwen, stap 2

De elektronicabehuizing bouwen, stap 2
De elektronicabehuizing bouwen, stap 2
De elektronicabehuizing bouwen, stap 2
De elektronicabehuizing bouwen, stap 2
De elektronicabehuizing bouwen, stap 2
De elektronicabehuizing bouwen, stap 2
De elektronicabehuizing bouwen, stap 2
De elektronicabehuizing bouwen, stap 2

Nu voegen we de knoppen en potentiometer toe en voegen alles samen.

Stap 1: Knoppen en bouten

Draai de zeskantmoeren los van uw knoppen en potentiometer. Er moet een grijpring onder de moer zitten, laat deze op zijn plaats.

Steek elk van de componenten door het respectievelijke gat en schroef vervolgens de moeren weer vast om ze op hun plaats te bevestigen. Draai de moeren zo vast dat u zeker weet dat elk onderdeel volledig vastzit.

Stap 2. Nek buigen

Steek de flex-hals door het gat in de bovenkant van het gebogen stuk. Hete lijm of las (als je de apparatuur hebt) de nek stevig op zijn plaats.

Als je hete lijm gebruikt zoals ik, is het een goed idee om het met veel lijm aan beide kanten te lijmen, verspreid over een groot gebied om te voorkomen dat de lijm later loslaat.

Stap 3: Shell-montage (geldt niet voor 3D-geprinte shell)

Gebruik lasdraad of hete lijm om de voor- en achterplaten op hun respectieve plaatsen op de gebogen afdekking vast te maken. Het kostte me een paar pogingen voordat mijn lijm plakte, en net als voorheen is de truc om veel lijm aan beide zijden van het gewricht te gebruiken, net als de nek. Hoe groter het gebied dat door de lijm wordt bedekt, hoe beter het zal plakken.

Nu we de shell hebben, kunnen we doorgaan met het toevoegen van alle circuitbits.

Stap 5: Elektronica toevoegen

Elektronica toevoegen
Elektronica toevoegen
Elektronica toevoegen
Elektronica toevoegen
Elektronica toevoegen
Elektronica toevoegen

En hier is het leuke gedeelte: Solderen! In de afgelopen weken ben ik eerlijk gezegd een beetje moe geworden van het solderen, omdat ik het de laatste tijd zo vaak heb gedaan om te proberen een ander project af te maken dat ik binnenkort zou moeten opzetten (let op een geradicaliseerde nieuwe versie van mijn robotdisplay platforms), waardoor ik het ene strijkijzer verpest en een ander krijg… Hoe dan ook, er valt hier niet veel te solderen, dus dit zou vrij eenvoudig moeten zijn.

Opmerking: als je Nano al pin-headers heeft, raad ik aan om ze voor dit project te desolderen, ze zullen alleen maar in de weg zitten.

Er is een diagram in de afbeeldingen hierboven, u kunt dat volgen als u wilt.

Stap 1: Interface

Soldeer van elk van de schakelaars een draad van een enkele pin naar een zijpin van de potentiometer. Soldeer een draad van deze zelfde zijpin naar een grondpin op de Nano.

Soldeer een draad van de middelste pin van de potentiometer naar A0 op de Nano.

Soldeer een draad van de niet-aangesloten pin van beide schakelaars naar A1 op de Nano.

Soldeer een draad van de niet-aangesloten pin op de andere schakelaar naar A2 op de Nano.

Let op: Het maakt niet uit welke schakelaar welke is, je kunt ze heel eenvoudig in de code wijzigen, behalve dat de ene schakelaar gewoon het tegenovergestelde doet van de andere.

Knip een stuk draad af dat 4 inch langer is dan de flexhals en strip beide zijden. Markeer met een Sharpie een kant met een enkele lijn.

Soldeer een draad aan de laatste niet-aangesloten zijpin van de potentiometer, draai het niet-aangesloten uiteinde van deze draad samen met het ongemarkeerde uiteinde van de draad van de laatste substap.

Soldeer dit samengevoegde uiteinde op 5V op de Nano.

Stap 2: Display- en stroomdraden

Knip 2 stukken draad van 10 cm langer dan de flexhals en strip beide uiteinden.

Markeer met een Sharpie de uiteinden van elke draad, één draad met 2 lijnen en één met 3.

Soldeer de draad met 2 lijnen aan digitale pin 9 op de Nano.

Soldeer op uw 5 mm barrel jack een draad van de middelste pin (positief) naar Vin op de Nano.

Soldeer nog een draad aan een zijpen (aarde/negatief) van de cilinderaansluiting.

Draai de lange draad met 3 lijnen samen met de draad van de zijpin van de barrel jack.

Soldeer deze draden aan de open GND-pin op de Nano.

Isoleer verbindingen met elektrische tape of hete lijm waar nodig.

Stap 3: Gaten snijden (alleen op de metalen versie, als je de hoes 3D hebt geprint, zou het goed moeten komen)

Maak met een boortje en een X-acto of Utility Knife voorzichtig een gat in de zijkant van het deksel voor de USB-poort van de Nano.

Maak nog een gat ter grootte van de voorkant van de cilinderaansluiting aan de achterkant van het deksel, bij voorkeur dichter bij de kant tegenover het gat voor de USB-poort.

Stap 4: Onderdelen monteren

Voer de drie lange draden door de flexibele nek en aan de andere kant naar buiten.

Gebruik veel hete lijm en monteer de cilinderaansluiting op zijn plaats met de pinnen naar de bovenkant van het deksel gericht.

Gebruik opnieuw veel hete lijm en monteer de Nano op zijn plaats, met de resetknop naar beneden gericht en de USB-poort in de sleuf. Ik heb een "hete lijmbrug" gemaakt tussen de loopkrik en de Nano, waardoor ze elkaar stevig op hun plaats houden.

Nu kunnen we verder gaan met het maken van de verzwaarde basis!

Stap 6: Gewogen basis

Gewogen basis
Gewogen basis
Gewogen basis
Gewogen basis
Gewogen basis
Gewogen basis

Ik heb vertrouwen in mijn soldeervaardigheden en had dit goed gepland, dus ik ging door en voegde de basis toe voordat ik de code testte. Als je minder vertrouwen hebt in je vaardigheden, raad ik je aan deze stap over te slaan en er aan het einde op terug te komen als je weet dat alles werkt.

Als je de 3D-geprinte versie hebt gemaakt, kun je de eerste stap overslaan en doorgaan naar de tweede.

Stap 1: Hout

Snijd uit een stuk multiplex van 1/4 inch een basis van ongeveer 3 inch bij 2 inch.

Schuur de randen om ze glad te strijken en verwijder bramen.

Stap 2: Gewicht

Zorg er eerst voor dat uw gewicht naar keuze, of dat nu een magneet, metaal of het aangepaste soldeersel is, binnen de randen van de metalen afdekking past die we hebben gemaakt. De mijne was een beetje groot in één richting, dus ik schoor een beetje vanaf de zijkant af met een X-acto-mes. Als de jouwe niet het soort is waar je dit kunt doen, moet je misschien wat rommelen met een ander basisontwerp.

Heet lijm je gewicht in het midden van het stuk triplex, of in het geval van het 3D-geprinte ontwerp, in het middelste "tray"-gebied dat ik voor dit doel heb ontworpen.

Stap 3: Basis

Plaats de metalen kap over het gewicht en centreer deze op de houten basis. (In het geval van het 3D-geprinte ontwerp, plaats het in de vooraf gemaakte groeven.)

Zorg ervoor dat het gewicht de elektronica niet hindert

Gebruik hete lijm om de basis op zijn plaats te bevestigen. Gebruik genoeg om een stevige verbinding te garanderen.

Nu we onze schakelkast volledig hebben gemaakt, gaan we verder met de lichten.

Stap 7: NeoPixel Halo-ring

NeoPixel Halo-ring
NeoPixel Halo-ring
NeoPixel Halo-ring
NeoPixel Halo-ring
NeoPixel Halo-ring
NeoPixel Halo-ring
NeoPixel Halo-ring
NeoPixel Halo-ring

De inspiratie voor de naam van deze lamp, dit onderdeel is de NeoPixel halo ring die we zullen gebruiken als onze verlichtingsbron. Dit specifieke stuk kan desgewenst worden aangepast of vervangen door elke NeoPixel of individueel adresseerbare LED-ring.

Stap 1: Solderen

Knip een strook NeoPixels 12 LED's in de lengte.

Soldeer de GND-pin aan de draad van de flex-hals die 3 lijnen heeft.

Soldeer de Din-pin aan de draad met 2 lijnen.

Soldeer de 5V pin aan de draad met 1 lijn.

Stap 2: Test de lichten

Download en installeer de Adafruit_NeoPixel-bibliotheek en open de "strandtest"-code.

Verander de constante pincode in 9.

Wijzig de lijn waar de strip is gedefinieerd, zodat deze is geconfigureerd voor 12 LED's.

Upload de code naar de Nano en zorg ervoor dat al uw LED's goed werken.

Vervang defecte LED's door werkende, totdat de hele strip werkt.

Stap 3: Bel

Neem de bovenste ring van een "Stick and Click" -lamp en knip eventuele schroefbevestigingen op de binnenrand af.

Knip een kleine inkeping aan de rand voor de draden van de strip.

Verwijder de afdekking voor de plakband aan de achterkant van de NeoPixels (indien aanwezig) en plak ze in de ring, met beide uiteinden van de strip ongeveer bij de inkeping die we hebben gemaakt.

Gebruik hete lijm om de randen van de strip stevig vast te zetten

Nadat de lijm volledig is afgekoeld, test u de pixels opnieuw. Dit is om ervoor te zorgen dat niemand kieskeurig is over de hitte en het krullen (een paar van mij waren).

Stap 4: Monteer

Knip twee kleine rechthoeken van 1/4 inch hout uit, ongeveer de hoogte van de ring en 1 2/3 keer zo breed.

Lijm deze parallel aan elkaar aan weerszijden van de draden van de ring, vul de opening op en bedek de draden ertussen volledig met lijm.

Duw voorzichtig de overtollige draad terug in de flexibele hals en lijm vervolgens de stukken hout op het uiteinde van de hals, gebruik veel lijm en vul voorzichtig eventuele openingen op (zonder de hals op te vullen met lijm).

Stap 6: Afwerking

Je kunt de ring schilderen en elke kleur monteren als je wilt, ik gaf de voorkeur aan de zilveren afwerking, dus ik gebruikte alleen een Sharpie om het logo te verdoezelen dat (irritant) op de ring was gedrukt. Hetzelfde geldt voor de rest van de lamp.

Nu kunnen we verder gaan met de laatste code!

Stap 8: Codes en tests

Codes en tests
Codes en tests
Codes en tests
Codes en tests

Nu hoeven we alleen nog maar de lamp te programmeren en te testen. Bijgevoegd is de huidige codeversie (rev1.0), ik heb deze code behoorlijk uitgebreid getest en het werkt erg goed. Ik werk aan een rev2.0 waarbij de knoppen zijn geconfigureerd als externe interrupts, zodat er gemakkelijker tussen modi kan worden geschakeld, maar deze versie bevat fouten en is nog niet klaar voor release. Met de huidige versie moet je de knop ingedrukt houden totdat deze de Debounce-lus uitvoert en de statusverandering herkent, wat vervelend kan zijn bij de langere "Dynamic"-lussen. Hieronder staat de code met enkele uitleg erin (dezelfde uitleg staat in de downloadbare versie).

#include #ifdef _AVR_ #include #endif

#definieer pincode 9

#define POT A0 #define BUTTON1 A1 #define BUTTON2 A2

// Parameter 1 = aantal pixels in strip

// Parameter 2 = Arduino-pinnummer (de meeste zijn geldig) // Parameter 3 = vlaggen van het pixeltype, indien nodig bij elkaar optellen: // NEO_KHZ800 800 KHz bitstream (de meeste NeoPixel-producten met WS2812 LED's) // NEO_KHZ400 400 KHz (klassiek ' v1' (niet v2) FLORA-pixels, WS2811-stuurprogramma's) // NEO_GRB-pixels zijn bedraad voor GRB-bitstream (de meeste NeoPixel-producten) // NEO_RGB-pixels zijn bedraad voor RGB-bitstream (v1 FLORA-pixels, niet v2) // NEO_RGBW-pixels zijn bedraad voor RGBW-bitstream (NeoPixel RGBW-producten) Adafruit_NeoPixel halo = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800);

// En nu een veiligheidsbericht van onze vrienden bij Adafruit:

// BELANGRIJK: om het risico op doorbranden van NeoPixel te verminderen, voegt u een condensator van 1000 uF toe

// pixelvoedingskabels, voeg 300 - 500 Ohm weerstand toe aan de gegevensinvoer van de eerste pixel // en minimaliseer de afstand tussen Arduino en de eerste pixel. Vermijd het aansluiten van // op een circuit onder spanning… sluit indien nodig eerst GND aan.

// Variabelen

int knopState1; int knopState2; // de huidige waarde van de invoerpin int lastButtonState1 = LAAG; // de vorige lezing van de invoerpin int lastButtonState2 = LAAG; int-modus; // de modus van onze lichten, kan een van de 16 instellingen zijn (0 tot en met 15) int brightVal = 0; // de helderheid/ snelheid, zoals ingesteld door de potentiometer

// de volgende variabelen zijn lang omdat de tijd, gemeten in milliseconden, // wordt snel een groter getal dan kan worden opgeslagen in een int. lange lastDebounceTime = 0; // de laatste keer dat de uitvoerpin werd omgeschakeld, lange debounceDelay = 50; // de debouncetijd; verhogen als de output flikkert

ongeldige debounce (){

// lees de status van de switch in een lokale variabele: int reading1 = digitalRead (BUTTON1); int reading2 = digitalRead(BUTTON2); // Als een van de knoppen is gewijzigd vanwege ruis of door te drukken op: if (reading1 != lastButtonState1 || reading2!= lastButtonState2) { // reset de debounce-timer lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { // als de knopstatus definitief is veranderd door indrukken/loslaten: if (reading1 != buttonState1) { buttonState1 = reading1; // stel het in als de uitlezing als het is gewijzigd als (buttonState1 == LOW) {// deze zijn ingesteld als actieve lage schakelmodus ++; if (modus == 16){ modus = 0; } } } if (reading2 != buttonState2){ buttonState2 = reading2; if (buttonState2 == LAAG){ modus = modus - 1; if (modus == -1){ modus = 15; } } } } // sla de meting op voor de volgende keer via de lus lastButtonState1 = reading1; lastButtonState2 = lezen2; }

void getBright(){ //onze code om de potentiometer te lezen, geeft een waarde tussen 0 en 255. Wordt gebruikt om de helderheid in sommige modi en snelheid in andere in te stellen.

int potVal = analoog lezen (POT); heldereVal = kaart (potVal, 0, 1023, 0, 255); }

//Hier zijn onze kleurmodi. Sommige hiervan zijn afgeleid van het voorbeeld van de strengtest, andere zijn origineel.

// Vul de puntjes na elkaar met een kleur (colorwipe, afgeleid van strandtest)

void colorWipe(uint32_t c, uint8_t wacht) { for(uint16_t i=0; i

// regenboogfuncties (ook afgeleid van strandtest)

ongeldige regenboog (uint8_t wacht) {

uint16_t i, j;

for(j=0; j<256; j++) { for(i=0; i

// Iets anders, hierdoor is de regenboog gelijkmatig verdeeld

void rainbowCycle (uint8_t wacht) { uint16_t i, j;

for(j=0; j<256*5; j++) {// 5 cycli van alle kleuren op het wiel for(i=0; i<halo.numPixels(); i++) {halo.setPixelColor(i, Wheel(((i * 256 / halo.numPixels()) + j) & 255)); } halo.show(); vertraging (wacht); } }

// Voer een waarde in van 0 tot 255 om een kleurwaarde te krijgen.

// De kleuren zijn een overgang r - g - b - terug naar r. uint32_t Wheel (byte WheelPos) { WheelPos = 255 - WheelPos; if (WheelPos < 85) { return halo. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if(WheelPos < 170) { WheelPos -= 85; retourneer halo. Color (0, WheelPos * 3, 255 - WheelPos * 3); } WielPos -= 170; retourneer halo. Color (WheelPos * 3, 255 - WheelPos * 3, 0); }

ongeldige setup() {

// Dit is voor Trinket 5V 16MHz, u kunt deze drie regels verwijderen als u geen Trinket gebruikt #if gedefinieerd (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // Einde van speciale code pinMode (POT, INPUT); pinMode (BUTTON1, INPUT_PULLUP); pinMode (BUTTON2, INPUT_PULLUP); pinMode (PIN, UITGANG); Serieel.begin(9600); // debug dingen halo.begin(); halo.show(); // Initialiseer alle pixels op 'uit'}

lege lus() {

debounce();

//Serial.println(modus); //meer foutopsporing //Serial.println (lastButtonState1); //Serial.println(lastButtonState2);

als (modus == 0){

getBright(); for (int i = 0; i <halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(brightVal, brightVal, brightVal)); // zet alle pixels op wit } halo.show (); }; if (modus == 1){ getBright(); for (int i = 0; i <halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(brightVal, 0, 0)); // zet alle pixels op rood} halo.show(); }; if (modus == 2){ getBright(); for (int i = 0; i <halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(0, brightVal, 0)); // zet alle pixels op groen} halo.show(); }; if (modus == 3){ getBright(); for (int i = 0; i <halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(0, 0, brightVal)); // zet alle pixels op blauw } halo.show(); }; if (modus == 4){ getBright(); for (int i = 0; i <halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(0, brightVal, brightVal)); // zet alle pixels op cyaan} halo.show(); }; if (modus == 5){ getBright(); for (int i = 0; i <halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(brightVal, 0, brightVal)); // zet alle pixels op paars/magenta } halo.show(); }; if (modus == 6){ getBright(); for (int i = 0; i <halo.numPixels(); i++){ halo.setPixelColor(i, halo. Color(brightVal, brightVal, 0)); // zet alle pixels op oranje/geel } halo.show(); }; if (mode == 7){ // nu de dynamische modi getBright(); colorWipe(halo. Color(brightVal, 0, 0), 50); // Rood }; if (modus == 8){ getBright(); colorWipe(halo. Color(0, brightVal, 0), 50); // Groente }; if (modus == 9){ getBright(); colorWipe (halo. Color (0, 0, brightVal), 50); // Blauw }; if (modus == 10){ getBright(); colorWipe (halo. Color (brightVal, brightVal, brightVal), 50); // wit }; if (modus == 11){ getBright(); colorWipe (halo. Color (brightVal, brightVal, 0), 50); // Oranje Geel }; if (modus == 12){ getBright(); colorWipe (halo. Color (0, brightVal, brightVal), 50); // cyaan}; if (modus == 13){ getBright(); colorWipe (halo. Color (brightVal, 0, brightVal), 50); // paars/magenta }; if (mode == 14){ // de laatste twee zijn snelheidsregeling, omdat de helderheid dynamisch is getBright(); regenboog (heldere waarde); }; if (modus == 15){ getBright(); regenboogCycle(brightVal); }; vertraging(10); // laat de processor een beetje rusten}

Stap 9: de grote finale

De grote finale
De grote finale

En nu hebben we een fantastisch, superhelder lampje!

U kunt het vanaf hier verder wijzigen of het laten zoals het is. U kunt de code wijzigen of zelfs een geheel nieuwe code schrijven. U kunt de basis vergroten en batterijen toevoegen. Je zou een ventilator kunnen toevoegen. U kunt meer NeoPixels toevoegen. De lijst van alles wat je hiermee zou kunnen doen is bijna oneindig. Ik zeg "bijna" omdat ik er vrij zeker van ben dat we nog steeds niet de technologie hebben om dit om te zetten in een mini-portaalgenerator (helaas), maar afgezien van dat soort dingen, is de enige beperking je verbeeldingskracht (en tot op zekere hoogte, zoals ik onlangs heb ontdekt, de gereedschappen in uw werkplaats). Maar als je de tools niet hebt, laat dat je dan niet tegenhouden, als je echt iets wilt doen, is er altijd een manier.

Dat is een deel van het doel van dit project, om mezelf (en in mindere mate de wereld) te bewijzen dat ik nuttige dingen kan maken die andere mensen ook leuk zouden vinden, zelfs als ik alleen maar een echte rommelhoop heb van oude en afgedankte componenten en een bak met Arduino-benodigdheden.

Ik laat het hier maar bij, want ik denk dat deze best goed gelukt is. Als je een suggestie voor verbetering hebt, of een vraag over mijn methodes, laat dan hieronder een reactie achter. Als je dit gemaakt hebt, maak een foto, we willen het allemaal zien!

Vergeet niet te stemmen als je dit leuk vindt!

Zoals altijd zijn dit de projecten van Dangerously Explosive, zijn levenslange missie, "To boldly build what you want to build, and more!"

De rest van mijn projecten vind je hier.

Bedankt voor het lezen, en veel plezier met maken!

Aanbevolen: