Innehållsförteckning:

HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 Steg (med bilder)
HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 Steg (med bilder)

Video: HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 Steg (med bilder)

Video: HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 Steg (med bilder)
Video: DIY HALO Lamp Rev1.0 - Powered by Arduino Nano, 15+ Color Modes 2024, Juni
Anonim
Image
Image
HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels
HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels
HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels
HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels

I denna instruerbara, kommer jag att visa dig hur man bygger HALO, eller Handy Arduino Lamp Rev1.0.

HALO är en enkel lampa, driven av Arduino Nano. Den har ett totalt fotavtryck på cirka 2 "x 3" och en vägd träbas för extrem stabilitet. Den flexibla halsen och 12 superljusa NeoPixels gör att den enkelt kan belysa varje detalj på vilken yta som helst. HALO har två tryckknappar för att bläddra igenom olika ljuslägen, varav det finns 15 förprogrammerade. På grund av användningen av Arduino Nano som processor, finns det möjlighet för dig att omprogrammera den med ytterligare funktioner. Den enda potentiometern används för att justera ljusstyrka och/eller hastighet vid vilken ett läge visas. En enkel metallkonstruktion gör HALO till en mycket hållbar lampa, lämplig för användning i alla verkstäder. Användarvänlighet förvärras av Nanos inbyggda effektregulator, så HALO kan drivas via antingen USB eller standard 5 mm fatuttag på baksidan.

Jag hoppas att se många människor använda dessa lampor inom en snar framtid, eftersom det finns så många möjligheter som öppnar sig med denna design. Vänligen lämna en röst i Microcontroller Contest om du gillar det här eller tycker att det är användbart på något sätt, jag skulle verkligen uppskatta det.

Innan vi går in på denna instruktiva, vill jag säga ett kort tack till alla mina följare och alla som någonsin har kommenterat, favoritat eller röstat på något av mina projekt. Tack vare er blev min Cardboard instruerbara en stor succé, och jag är nu, när jag skrev det här nära 100 följare, en stor milstolpe enligt mig. Jag uppskattar verkligen allt stöd jag får från er när jag lägger upp min Ible's, och när det gäller det skulle jag inte vara där jag är idag utan er. Med det sagt, tack alla!

OBS: I hela denna instruktionsbok finns fraser i fetstil. Detta är de viktiga delarna i varje steg, och bör inte ignoreras. Detta är inte jag som skriker eller avsiktligt är oförskämd, jag försöker helt enkelt en ny skrivteknik för att bättre betona vad som behöver göras. Om du inte gillar det och föredrar hur jag tidigare tenderade att skriva mina steg, meddela mig i kommentarerna, så återgår jag till min gamla stil.

Steg 1: Samla material

Insamlingsmaterial
Insamlingsmaterial
Insamlingsmaterial
Insamlingsmaterial
Insamlingsmaterial
Insamlingsmaterial
Insamlingsmaterial
Insamlingsmaterial

Hur många gånger måste jag säga det? Ha alltid det du behöver, och du kommer garanterat kunna bygga något till mål.

Obs! Några av dessa är affiliate -länkar (märkta "al"), jag får en liten kickback om du köper genom dem, utan extra kostnad för dig. Tack om du köper via länkarna

Delar:

1x Arduino Nano Nano - al

1x 10k roterande potentiometer 5 -pack 10k potentiometrar - al

1x 5 mm fatjacka (min återvinns från en stekt Arduino Uno) Female Barrel Jack (5 -pack) - al

2x 2-stifts tillfälliga tryckknappar 10-pack SPST tryckknappsbrytare-al

12x NeoPixels från en 60 LED/meter sträng (motsvarande, t.ex. WS2812B, fungerar) Adafruit NeoPixels

Ett ark av 0,5 mm aluminium

Den flexibla halsen från en gammal flexlighter

Den övre lockringen från en "Stick and Click" LED -skåplampa LED -skåpbelysning - al

Ett litet ark med 1/4 tum plywood

En tung, platt metallvikt med mått (ungefär) 1,5 "x 2,5" x 0,25"

Elsträngad kärnkabel

Verktyg:

Hotlimpistol och lim

Lödkolv och löd

Sladdlös borrmaskin och diverse små vridbitar

X-acto kniv (eller en verktygskniv)

Wire strippers

Tång

Trådskärare/klippare

Kraftig sax

Om du inte har den platta metallvikten behöver du också:

1 rulle billigt löd (inte de saker du kommer att använda för lödning) Billigt blyfritt löd

Alkoholljus (eller en Bunsenbrännare)

En liten ishärdat stålrätt som du inte har något emot att förstöra (eller en liten degel om du har en)

Ett stativ för disken/degeln (jag gjorde min av 12 gauge ståltråd)

En lerväxträtt (en av de sakerna som går under krukan)

Lite aluminiumfolie

OBS! Om du har ett svetspaket eller en 3D -skrivare kanske du inte behöver alla de verktyg som anges här.

Steg 2: Gör vikten

Att göra vikten
Att göra vikten
Att göra vikten
Att göra vikten
Att göra vikten
Att göra vikten

Detta är ett ganska svårt steg, och du måste vara ytterst försiktig när du gör det. Om du har en tung metallvikt eller en platt neodymmagnet ca 2,75 "på 1,75" vid 0,25 ", skulle jag rekommendera att använda det istället (och magneten skulle till och med låta dig placera lampan i sidled på metallytor!).

Friskrivningsklausul: Jag ansvarar inte för någon skada från din sida, så använd sunt förnuft

Gör också detta utanför över en betongyta som du inte har något emot om det blir lite svidigt (detta är bara en försiktighetsåtgärd). Jag har inga bilder för den här processen eftersom en kamera skulle ha varit en extra distraktion som jag inte behövde eller ville ha.

Gör först en liten form av aluminiumfolie eller våt lera, cirka 2 3/4 tum med 1 3/4 tum med 1/4 tum i inre dimensioner. Det kan vara en ovoid form som min, eller en rektangel. Använd flera lager folie eller tjocka lager av lera.

Lägg formen i den keramiska skålen och fyll både formen och brickan med kallt vatten.

Ta ditt otända spritljus/bunsenbrännare och placera stålfatet/degeln på stativet så att lågan värmer skålens mitt (när den är tänd). Innan du tänder brännaren, se till att du har minst en tång eller metallbearbetningstång till hands, om inte 2.

Det är en bra idé att bära läderhandskar, långa ärmar, långbyxor, slutna tåskor och ögonskydd medan du gör de närmaste stegen

Rulla upp och bryt av ett gäng av det billiga lödet från spolen och lägg det i stålfatet, tänd sedan brännaren. Vänta tills spolen smälter helt och börja sedan mata in resten av lodet i skålen i måttlig takt. Om lödet innehåller något kolofonium kan detta spontant förbränna i värmen och ge en blekgul låga och svart rök. Oroa dig inte, detta har hänt mig flera gånger och är helt normalt.

Fortsätt mata lödet i skålen tills det sista av det har smält.

Låt alla lågor från förbränning av kolofon dö ut helt och använd tången/tången för att ta tag i skålen och snurra försiktigt den smälta metallen inuti medan du försiktigt förvarar den i lågan.

När du är säker på att allt lödmedel är helt flytande och vid en bra varm temperatur, ta snabbt och försiktigt bort det från lågan och häll det i formen. Det kommer ett högt väsande ljud och ånga när en del av vattnet förångas och resten tvingas ut ur formen för att ersättas av smält lod.

Låt lodet svalna, stäng av brännaren/blåsa ut ditt ljus och placera stålfatet någonstans säkert att svalna. Du kanske vill hälla kallt vatten över kylningslödet för att påskynda kylningen och för att härda den ytterligare. (Det kalla vattnet gör att utsidan svalnar snabbare än insidan, vilket skapar inre spänningar som gör metallen hårdare och styvare, liknande en Prince Ruperts droppe.) Du kan också köra vatten över din metallskål, men det kommer att resultera i att den blir spröd, särskilt om det görs flera gånger.

När lodet har svalnat helt (cirka 20 minuter för säkerhets skull), ta bort det från folieformen.

Min hamnade tjockare på ena sidan än den andra, så jag använde en hammare för att jämna ut den och platta ut kanterna (vilket resulterar i den form du ser på bilderna). Jag slipade den sedan lätt under rinnande vatten för att polera den och lade den åt sidan för senare.

Steg 3: Bygga elektronikhuset, steg 1

Bygga elektronikhuset, steg 1
Bygga elektronikhuset, steg 1
Bygga elektronikhuset, steg 1
Bygga elektronikhuset, steg 1
Bygga elektronikhuset, steg 1
Bygga elektronikhuset, steg 1
Bygga elektronikhuset, steg 1
Bygga elektronikhuset, steg 1

Det här är delarna till skalet som kommer att hysa Nano, montera gränssnittet och är i grunden det som håller ihop HALO -lampan. Jag gjorde min med min 0,5 mm aluminium och hett lim, men om du har en 3D -skrivare (något jag har försökt få till min butik ett tag) gjorde jag en. STL -version i Tinkercad som jag bifogade här för dig att ladda ner. Eftersom jag inte har en skrivare själv kunde jag inte testa skriva ut modellen för att se om allt skrivs ut ordentligt, men jag tycker att det borde vara bra om du lägger till rätt stödstrukturer i din skärare. Du kan också kopiera och redigera källfilen här om du behöver eller vill ha en något annorlunda design eller estetik.

Dimensionerna härleddes faktiskt från metallvikten jag gjöt för mig själv av löd, inte från elektronikens storlek, men det blev ganska bra ändå och måtten är ganska optimala.

Bilderna visar en något annorlunda arbetsordning än vad jag kommer att skriva här, detta beror på att jag har utarbetat en förbättrad metod baserad på resultaten av min ursprungliga metod.

Om du monterar av plåt som jag är, här är vad du behöver göra:

Steg 1: Ansiktsplattor

Klipp två identiska halvcirkelformade former som är ungefär 1,5 cm höga och 3 cm breda. (Jag frihandade mina, så de ser lite ut som framsidan av en jukebox).

I en av de två plattorna, borra de tre hålen för knapparna och potentiometern. Mina var var 1/4 tum i diameter. Dessa kan vara i vilken layout som helst, men jag föredrar att min potentiometer höjs något i mitten, med knapparna på vardera sidan som bildar en likbent triangel. Vid borrning gör jag alltid ett litet pilothål innan jag går till önskad storlek, det hjälper till att centrera hålen och gör dem lite renare.

Steg 2: välvt lock

Böj över en bit aluminium för att passa runt kurvan på en av frontplattorna och markera rätt kantlängd.

Klipp ut en remsa av denna längd och cirka 2 tum bred och forma den till en båge som matchar formen på kurvan på ansiktsplattorna på vardera sidan.

Hitta mittpunkten längst upp på kurvan och borra ett hål för att passa tändarens flexhals. Jag kompenserade hålet mot baksidan i min eftersom min lampa mestadels kommer att ha nacken lutad framåt under användning, så jag ville lägga till lite motvikt till det. Min flexibla hals var bara lite över 1/4 tum i diameter, så jag använde en 1/4 tum bit (den största vridbiten jag äger som är under 3/4 tum) och vinklade och vridde försiktigt borra för att "borra" ut hålet tills nacken passar.

Nu när vi har delarna till skalet är nästa steg att lägga till elektronik och sätta ihop det!

Steg 4: Bygga elektronikhuset, steg 2

Bygga elektronikhuset, steg 2
Bygga elektronikhuset, steg 2
Bygga elektronikhuset, steg 2
Bygga elektronikhuset, steg 2
Bygga elektronikhuset, steg 2
Bygga elektronikhuset, steg 2
Bygga elektronikhuset, steg 2
Bygga elektronikhuset, steg 2

Nu lägger vi till knapparna och potentiometern och lägger ihop allt.

Steg 1: Knappar och bultar

Skruva loss sexkantmuttrarna från knapparna och potentiometern. Det ska finnas en gripring under muttern, låt den vara kvar.

Slå ut var och en av komponenterna genom sitt respektive hål och skruva sedan tillbaka muttrarna för att fästa dem på plats. Dra åt muttrarna till den punkt där du är säker på att varje komponent är helt säker.

Steg 2. Flex Neck

Stick flexhalsen genom hålet i toppen av det böjda stycket. Varmt lim eller svets (om du har utrustningen) halsen säkert på plats.

Om du använder varmt lim som jag är det en bra idé att limma det med massor av lim på båda sidorna utspridda över ett stort område för att förhindra att limet lossnar senare.

Steg 3: Skalmontering (gäller inte 3D -tryckt skal)

Använd antingen svetsstång eller varmt lim för att fästa de främre och bakre frontplattorna på sina respektive platser på det välvda locket. Det tog ett par försök innan mitt lim fastnade, och som tidigare är tricket att använda massor av lim på båda sidor av leden, precis som halsen. Ju större yta som täcks av limmet, desto bättre fastnar det.

Nu när vi har skalet kan vi gå vidare för att lägga till alla kretsbitar.

Steg 5: Lägga till elektronik

Lägger till elektronik
Lägger till elektronik
Lägger till elektronik
Lägger till elektronik
Lägger till elektronik
Lägger till elektronik

Och här är den roliga delen: Lödning! Under de senaste veckorna har jag ärligt tröttnat lite på lödning, eftersom jag har gjort det så mycket på sistone för att försöka avsluta ett annat projekt som jag borde lägga upp snart (håll utkik efter en radikaliserad ny version av min robotdisplay plattformar), vilket resulterar i att jag förstör ett järn och får ett annat … Hur som helst, det finns inte mycket att löda här, så det här borde vara ganska enkelt.

Obs: Om din Nano redan har stifthuvuden på den, skulle jag rekommendera att avlödda dem för det här projektet, de kommer bara i vägen.

Det finns ett diagram i bilderna ovan, du kan följa det om du vill.

Steg 1: Gränssnitt

Från var och en av omkopplarna, löd en tråd från en enda stift till en sidostift på potentiometern. Löd en tråd från samma sidnål till en jordnål på Nano.

Löd en tråd från potentiometerns mittstift till A0 på Nano.

Löd en tråd från den oanslutna stiftet på endera växeln till A1 på Nano.

Löd en tråd från den oanslutna stiftet på den andra omkopplaren till A2 på Nano.

Obs: Det spelar ingen roll vilken omkopplare som är vilken, du kan enkelt ändra dem i koden, förutom att den ena omkopplaren helt enkelt gör det motsatta av den andra.

Klipp en trådlängd 4 tum längre än flexhalsen och ta bort båda sidorna. Använd en Sharpie, markera ena sidan med en enda rad.

Löd en tråd till den sista okopplade sidostiftet på potentiometern, vrid den icke anslutna änden av denna tråd tillsammans med den omärkta änden av tråden från det sista delsteget.

Löd denna sammanfogade ände till 5V på Nano.

Steg 2: Display- och strömkablar

Klipp 2 trådlängder 4 tum längre än flexhalsen och ta bort båda ändarna.

Använd en Sharpie, markera ändarna på varje tråd, en tråd med 2 rader och en med 3.

Löd kabeln med 2 linjer till digital stift 9 på Nano.

Löd en tråd från mittstiftet (positivt) på din 5 mm fatjack till Vin på Nano.

Löd en annan tråd till en sidostift (jordad/negativ) på fatuttaget.

Vrid den långa tråden med 3 linjer tillsammans med tråden från sidostiftet på fatuttaget.

Löd dessa trådar till den öppna GND -stiftet på Nano.

Isolera anslutningarna med eltejp eller varmt lim vid behov.

Steg 3: Skärhål (endast på metallversionen, om du tryckt omslaget i 3D skulle du ha det bra)

Använd en borr och en X-acto eller verktygskniv för att försiktigt göra ett hål i sidan av locket för USB-porten på Nano.

Gör ett annat hål ungefär lika stort som fatet på baksidan av locket, helst närmare sidan motsatt hålet för USB -porten.

Steg 4: Monteringskomponenter

Mata de tre långa trådarna genom flexhalsen och ut på andra sidan.

Använd mycket varmt lim för att montera fatuttaget på plats med tapparna vända mot lockets ovansida.

Använd återigen mycket varmt lim, montera Nano på plats, med återställningsknappen nedåt och USB -porten i sin plats. Jag gjorde en "hot lim bridge" mellan fatuttaget och Nano, vilket får varandra att hålla varandra stadigt på plats.

Nu kan vi gå vidare för att göra den viktade basen!

Steg 6: Viktad bas

Viktad bas
Viktad bas
Viktad bas
Viktad bas
Viktad bas
Viktad bas

Jag är säker på mina lödkunskaper och hade det här välplanerat, så jag gick vidare och lade till basen innan jag testade koden. Om du är mindre säker på dina färdigheter föreslår jag att du hoppar över det här steget och återgår till det i slutet när du vet att allt fungerar.

Om du gjorde den 3D -tryckta versionen kan du hoppa över det första steget och gå vidare till det andra.

Steg 1: Trä

Från ett ark med 1/4 tum plywood, skär en bas ca 3 tum med 2 tum.

Slipa kanterna för att släta ut dem och ta bort borrar.

Steg 2: Vikt

Först och främst, se till att du väljer vikten, var att en magnet, metall eller en anpassad lödning passar in i kanterna på metallkåpan vi gjorde. Min var lite stor åt ena hållet, så jag rakade av mig lite från sidan med en X-acto kniv. Om din inte är den sort där du kan göra detta kan du behöva tjata med en annan basdesign.

Varm lim din vikt i mitten av plywoodbiten, eller när det gäller 3D -tryckt design, i mitt "fack" -området som jag designade för detta ändamål.

Steg 3: Bas

Montera metallkåpan över vikten och centrera den på träbasen. (För 3D-tryckt design, montera den i de färdiga spåren.)

Se till att vikten inte stör elektroniken

Använd varmt lim för att säkra basen på plats. Använd tillräckligt för att säkerställa en fast anslutning.

Nu när vi har vår kontrollbox helt tillverkad, låt oss gå vidare till lamporna.

Steg 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

Inspirationen till namnet på denna lampa, denna del är NeoPixel -haloringen som vi kommer att använda som vår belysningskälla. Denna speciella del kan om så önskas modifieras eller ersättas med valfri NeoPixel eller individuellt adresserbar LED -ring.

Steg 1: Lödning

Klipp en remsa NeoPixels 12 lysdioder i längd.

Löd GND -stiftet till tråden från flexhalsen som har 3 linjer.

Löd din stift till tråden som har 2 linjer.

Löd 5V -stiftet till tråden som har 1 linje.

Steg 2: Testa lamporna

Ladda ner och installera Adafruit_NeoPixel -biblioteket och öppna "strandtest" -koden.

Ändra den konstanta PIN -koden till 9.

Ändra linjen där remsan är definierad så att den är konfigurerad för 12 lysdioder.

Ladda upp koden till Nano och se till att alla dina lysdioder fungerar korrekt.

Byt ut felaktiga lysdioder med fungerande tills hela remsan fungerar.

Steg 3: Ring

Ta den övre ringen från en "Stick and Click" -lampa och klipp av eventuella skruvfästen på den inre fälgen.

Klipp ett litet hack på kanten för trådarna från remsan.

Skala av locket för tejpbandet på baksidan av NeoPixels (om det finns något) och stick in dem inuti ringen, med endera änden av remsan precis vid det hack som vi gjorde.

Använd varmt lim för att säkert fästa kanterna på remsan

Efter att limmet har svalnat helt, testa pixlarna igen. Detta för att se till att ingen är pigg om värmen och curling (några av mina var).

Steg 4: Montera

Klipp ut två små rektanglar av 1/4 tum trä, ungefär ringens höjd och 1 2/3 gånger så breda.

Lim dessa parallellt med varandra på vardera sidan av trådarna från ringen, fyll i luckan och täck trådarna mellan helt med lim.

Skjut försiktigt in överskottslängden tillbaka i flexhalsen och lim sedan träbitarna på halsens ände, använd mycket lim och fyll försiktigt eventuella luckor (utan att fylla halsen med lim).

Steg 6: Efterbehandling

Du kan måla ringen och montera valfri färg om du vill, jag föredrog silverfärgen så jag använde bara en Sharpie för att täcka över logotypen som (irriterande) trycktes på ringen. Detsamma gäller resten av lampan.

Nu kan vi gå vidare för att slutföra med den slutliga koden!

Steg 8: Koder och tester

Koder och tester
Koder och tester
Koder och tester
Koder och tester

Så nu är det bara att programmera lampan och testa den. Bifogad är den nuvarande kodversionen (rev1.0), jag har testat den här koden ganska omfattande och den fungerar mycket bra. Jag arbetar med en rev2.0 där knapparna är konfigurerade som externa avbrott så att lägen lättare kan växlas mellan, men den här versionen är buggig och ännu inte redo att släppas. Med den nuvarande versionen måste du hålla knappen tills den kör Debounce -slingan och känner igen tillståndsförändringen, vilket kan vara irriterande på de längre "dynamiska" looparna. Nedan finns koden med några förklaringar inskrivna (det finns samma förklaringar i den nedladdningsbara versionen).

#include #ifdef _AVR_ #include #endif

#definiera PIN 9

#define POT A0 #define KNAPP1 A1 #definiera KNAPP2 A2

// Parameter 1 = antal pixlar i remsan

// Parameter 2 = Arduino -pin -nummer (de flesta är giltiga) // Parameter 3 = pixeltypflaggor, lägg ihop efter behov: // NEO_KHZ800 800 KHz bitström (de flesta NeoPixel -produkter med WS2812 lysdioder) // NEO_KHZ400 400 KHz (klassisk ' v1 '(inte v2) FLORA -pixlar, WS2811 -drivrutiner) // NEO_GRB Pixlar är anslutna för GRB -bitström (de flesta NeoPixel -produkter) // NEO_RGB -pixlar är anslutna för RGB -bitström (v1 FLORA -pixlar, inte v2) // NEO_RGBW -pixlar är anslutna för RGBW bitström (NeoPixel RGBW -produkter) Adafruit_NeoPixel halo = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800);

// Och nu, ett säkerhetsmeddelande från våra vänner på Adafruit:

// VIKTIGT: För att minska risken för NeoPixel -utbrändhet, lägg till 1000 uF kondensator tvärs över

// pixelkablar, lägg till 300 - 500 Ohm motstånd på den första pixelens datainmatning // och minimera avståndet mellan Arduino och första pixeln. Undvik att ansluta // på en spänningskrets … om du måste, anslut GND först.

// Variabler

int buttonState1; int buttonState2; // den aktuella avläsningen från ingångsstiftet int lastButtonState1 = LOW; // föregående avläsning från inmatningsstiftet int lastButtonState2 = LOW; int -läge; // läget för våra lampor, kan vara en av 16 inställningar (0 till 15) int brightVal = 0; // ljusstyrka/ hastighet, inställt av potentiometern

// följande variabler är långa eftersom tiden, mätt i milisekunder, // blir snabbt ett större tal än vad som kan lagras i en int. long lastDebounceTime = 0; // förra gången utgångsstiften växlade lång debounceDelay = 50; // avbrottstiden; öka om utgången blinkar

void debounce () {

// läs omkopplarens tillstånd till en lokal variabel: intavläsning1 = digitalRead (BUTTON1); int läsning2 = digitalRead (KNAPP2); // Om någon av knapparna ändrats på grund av brus eller tryckning: if (läsning1! = LastButtonState1 || läsning2! = SistaButtonState2) {// återställ avstängningstimern lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// om knapptillståndet definitivt har ändrats på grund av att trycka/släppa: if (reading1! = buttonState1) {buttonState1 = reading1; // ställ in det som avläsningen om det har ändrats om (buttonState1 == LOW) {// dessa är inställda som aktivt lägesläge ++; if (mode == 16) {mode = 0; }}} if (läsning2! = buttonState2) {buttonState2 = läsning2; if (buttonState2 == LOW) {mode = mode - 1; if (mode == -1) {mode = 15; }}}}} // spara avläsningen för nästa gång genom slingan lastButtonState1 = läsning1; lastButtonState2 = läsning2; }

void getBright () {// vår kod för att läsa potentiometern, matar ut ett värde mellan 0 och 255. Används för att ställa in ljusstyrka i vissa lägen och hastighet i andra.

int potVal = analogRead (POT); brightVal = map (potVal, 0, 1023, 0, 255); }

// Här är våra färglägen. Några av dessa härrör från strängprovsexemplet, andra är original.

// Fyll prickarna en efter en med en färg (colorwipe, härledd från strängtest)

void colorWipe (uint32_t c, uint8_t wait) {för (uint16_t i = 0; i

// regnbågsfunktioner (även härledda från strängtest)

void rainbow (uint8_t wait) {

uint16_t i, j;

för (j = 0; j <256; j ++) {för (i = 0; i

// Lite annorlunda, detta gör regnbågen lika fördelad över hela

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

för (j = 0; j <256*5; j ++) {// 5 cykler av alla färger på hjulet för (i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, Wheel (((i * 256 / halo.numPixels ()) + j) & 255)); } halo.show (); fördröjning (vänta); }}

// Ange ett värde 0 till 255 för att få ett färgvärde.

// Färgerna är en övergång r - g - b - tillbaka till 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; returhalo. Color (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; returhalo. Color (WheelPos * 3, 255 - WheelPos * 3, 0); }

void setup () {

// Detta är för Trinket 5V 16MHz, du kan ta bort dessa tre rader om du inte använder en Trinket #if definierad (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Slut på prydnadsspecialkod pinMode (POT, INPUT); pinMode (BUTTON1, INPUT_PULLUP); pinMode (BUTTON2, INPUT_PULLUP); pinMode (PIN, OUTPUT); Serial.begin (9600); // felsöka saker halo.begin (); halo.show (); // Initiera alla pixlar till 'av'}

void loop () {

debounce ();

//Serial.println(läge); // mer felsökning //Serial.println(lastButtonState1); //Serial.println(lastButtonState2);

om (läge == 0) {

getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, brightVal)); // ställ in alla pixlar till vita} halo.show (); }; if (mode == 1) {getBright (); för (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, 0)); // ställ in alla pixlar till röda} halo.show (); }; if (mode == 2) {getBright (); för (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, 0)); // ställ in alla pixlar till grönt} halo.show (); }; if (mode == 3) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, 0, brightVal)); // ställ in alla pixlar till blå} halo.show (); }; if (mode == 4) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, brightVal)); // ställ in alla pixlar till cyan} halo.show (); }; if (mode == 5) {getBright (); för (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, brightVal)); // ställ in alla pixlar till lila/magenta} halo.show (); }; if (mode == 6) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, 0)); // ställ in alla pixlar till orange/gul} halo.show (); }; if (mode == 7) {// nu blir de dynamiska lägena getBright (); colorWipe (halo. Color (brightVal, 0, 0), 50); // Röd}; if (mode == 8) {getBright (); colorWipe (halo. Color (0, brightVal, 0), 50); // Grön}; if (mode == 9) {getBright (); colorWipe (halo. Color (0, 0, brightVal), 50); // Blå}; if (mode == 10) {getBright (); colorWipe (halo. Color (brightVal, brightVal, brightVal), 50); // vit}; if (mode == 11) {getBright (); colorWipe (halo. Color (brightVal, brightVal, 0), 50); // orange/gul}; if (mode == 12) {getBright (); colorWipe (halo. Color (0, brightVal, brightVal), 50); // cyan}; if (mode == 13) {getBright (); colorWipe (halo. Color (brightVal, 0, brightVal), 50); // lila/magenta}; om (mode == 14) {// de två sista är hastighetskontroll, eftersom ljusstyrkan är dynamisk getBright (); regnbåge (brightVal); }; if (mode == 15) {getBright (); rainbowCycle (brightVal); }; fördröjning (10); // låt processorn vila lite}

Steg 9: Grand Finale

Den stora finalen
Den stora finalen

Och nu har vi en fantastisk, superljus liten lampa!

Du kan ändra det ytterligare härifrån eller lämna det som det är. Du kan ändra koden eller till och med skriva en ny helt. Du kan förstora basen och lägga till batterier. Du kan lägga till en fläkt. Du kan lägga till fler NeoPixels. Listan över allt du kan göra med detta är nästan oändligt. Jag säger "nästan" eftersom jag är ganska säker på att vi fortfarande inte har tekniken för att konvertera detta till en miniportalgenerator (tyvärr), men bortsett från sådana saker är den enda gränsen din fantasi (och till viss del, som jag nyligen har hittat, verktygen i din verkstad). Men om du inte har verktygen, låt det inte stoppa dig, om du verkligen vill göra något finns det alltid ett sätt.

Det är en del av poängen med det här projektet, att bevisa för mig själv (och i mindre utsträckning världen) att jag kan göra användbara saker som andra människor också skulle vilja, även om allt jag har är en verklig skräphög av gammalt och skrotat komponenter och en behållare med Arduino -tillbehör.

Jag slutar här, för jag tycker att den här blev ganska bra. Om du har ett förslag till förbättring eller en fråga om mina metoder, vänligen lämna en kommentar nedan. Om du gjorde det här, ta en bild, vi vill alla se det!

Glöm inte att rösta om du gillar det här!

Som alltid är detta projekten för Dangerously Explosive, hans livslånga uppdrag, "Att djärvt bygga det du vill bygga och mer!"

Du hittar resten av mina projekt här.

Tack för att du läste, och Happy Making!

Rekommenderad: