Indholdsfortegnelse:

HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 trin (med billeder)
HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 trin (med billeder)

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

Video: HALO: Handy Arduino Lamp Rev1.0 W/NeoPixels: 9 trin (med billeder)
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 denne instruktive vil jeg vise dig, hvordan du bygger HALO eller Handy Arduino Lamp Rev1.0.

HALO er en enkel lampe, drevet af Arduino Nano. Den har et samlet fodaftryk på ca. 2 "x 3" og en vægtet træbase for ekstrem stabilitet. Den fleksible hals og 12 super-lyse NeoPixels gør det let at belyse alle detaljer på enhver overflade. HALO har to trykknapper til at skifte mellem forskellige lysindstillinger, hvoraf der er 15 forprogrammerede. På grund af brugen af Arduino Nano som processor er der mulighed for at omprogrammere den med yderligere funktioner. Det eneste potentiometer bruges til at justere lysstyrke og/eller hastighed, hvormed en tilstand vises. En enkel metalkonstruktion gør HALO til en meget holdbar lampe, der er velegnet til brug i ethvert værksted. Brugervenlighed forstærkes af Nano's indbyggede effektregulator, så HALO kan drives via enten USB eller standard 5 mm tøndejulstik på bagsiden.

Jeg håber at se mange mennesker bruge disse lamper i den nærmeste fremtid, fordi der er så mange muligheder, der åbner op for dette design. Efterlad en stemme i Microcontroller -konkurrencen, hvis du kan lide dette eller finder det nyttigt på en eller anden måde, jeg ville virkelig sætte pris på det.

Inden vi går ind i denne instruktive, vil jeg gerne sige en kort tak til alle mine følgere og alle, der nogensinde har kommenteret, foretrukket eller stemt om nogen af mine projekter. Takket være jer blev min instruktion i Cardboard en kæmpe succes, og jeg er nu, da jeg skrev dette, nået op på 100 følgere, en stor milepæl efter min mening. Jeg værdsætter virkelig al den støtte, jeg får fra jer, når jeg lægger mine Ible'er op, og når det kommer til stykket, ville jeg ikke være, hvor jeg er i dag uden jer. Med det sagt, tak, alle sammen!

BEMÆRK: I hele denne instruks er der udtrykt med fed skrift. Dette er de vigtige dele af hvert trin, og bør ikke ignoreres. Dette er ikke mig, der råber eller forsætligt er uhøflig, jeg prøver simpelthen en ny skrivemåde for bedre at understrege, hvad der skal gøres. Hvis du ikke kan lide det og foretrækker, hvordan jeg tidligere havde tendens til at skrive mine trin, så lad mig vide det i kommentarerne, og jeg skifter tilbage til min gamle stil.

Trin 1: Indsamling af materialer

Indsamlingsmaterialer
Indsamlingsmaterialer
Indsamlingsmaterialer
Indsamlingsmaterialer
Indsamlingsmaterialer
Indsamlingsmaterialer
Indsamlingsmaterialer
Indsamlingsmaterialer

Hvor mange gange skal jeg sige det? Hav altid det, du har brug for, og du er garanteret i stand til at bygge noget igennem til mål.

Bemærk: Nogle af disse er tilknyttede links (mærket "al"), jeg får et lille tilbageslag, hvis du køber igennem dem, uden ekstra omkostninger for dig. Tak, hvis du køber via linkene

Dele:

1x Arduino Nano Nano - al

1x 10k Rotary Potentiometer 5 pack 10k Potentiometre - al

1x 5 mm tønde jack (min er genbrugt fra en stegt Arduino Uno) Female Barrel Jack (5 pak) - al

2x 2-pin momentane trykknapper 10 stk SPST trykknapkontakt-al

12x NeoPixels fra en 60 LED/meter streng (enhver tilsvarende, f.eks. WS2812B, fungerer) Adafruit NeoPixels

Et ark af 0,5 mm aluminium

Den fleksible hals fra en gammel flex lighter

Den øverste afdækningsring fra en "Stick and Click" LED skabslampe LED Skabslampe - al

Et lille ark med 1/4 tommer krydsfiner

En tung, flad metalvægt af dimensioner (nogenlunde) 1,5 "x 2,5" x 0,25"

Elektrisk kerne med elektrisk ledning

Værktøjer:

Varm limpistol og lim

Loddejern og lodning

Akku -boremaskine og forskellige små twist -bits

X-acto kniv (eller en kniv)

Wire strippere

Tang

Trådskærere/-klip

Heavy Duty saks

Hvis du ikke har den flade metalvægt, har du også brug for:

1 rulle billig loddemetal (ikke de ting, du vil bruge til lodning) Billig blyfri lodning

Alkohollys (eller en Bunsen -brænder)

En lille ishærdet stålskål, du ikke har noget imod at ødelægge (eller en lille smeltedigel, hvis du har en)

Et stativ til skålen/smeltedigelen (jeg lavede min af 12 gauge ståltråd)

En lerplantefad (en af de ting, der går under gryden)

Noget aluminiumsfolie

BEMÆRK: Hvis du har et svejsesæt eller en 3D -printer, har du muligvis ikke brug for alle de værktøjer, der er angivet her.

Trin 2: Vægt

At lave vægten
At lave vægten
At lave vægten
At lave vægten
At lave vægten
At lave vægten

Dette er et ret vanskeligt trin, og du skal udvise ekstrem forsigtighed ved at gøre det. Hvis du har en tung metalvægt eller en flad neodymmagnet omkring 2,75 "ved 1,75" ved 0,25 ", vil jeg anbefale at bruge det i stedet (og magneten ville endda give dig mulighed for at placere lampen sidelæns på metaloverflader!).

Ansvarsfraskrivelse: Jeg er ikke ansvarlig for nogen skade fra din side, så brug venligst sund fornuft

Gør også dette udenfor over en betonoverflade, som du ikke vil have noget imod, hvis det bliver en smule brændt (dette er bare en sikkerhedsforanstaltning). Jeg har ingen billeder til denne proces, fordi et kamera ville have været en ekstra distraktion, som jeg ikke havde brug for eller ønskede.

Lav først en lille form af aluminiumsfolie eller vådt ler, ca. 2 3/4 tommer med 1 3/4 tommer med 1/4 tommer i indvendige dimensioner. Det kan være en ovoid form som min eller et rektangel. Brug flere lag folie eller tykke lag ler.

Læg formen i det keramiske plantefad, og fyld både formen og bakken med koldt vand.

Tag dit ikke tændte spritlys/bunsenbrænder, og anbring stålfadet/digelen på stativet, så flammen vil opvarme midten af fadet (når det er tændt). Inden du tænder brænderen, skal du sørge for at have mindst 1 tang eller metalbearbejdningstang ved hånden, hvis ikke 2.

Det er en god idé at have læderhandsker, lange ærmer, lange bukser, lukkede sko og øjenbeskyttelse på, mens du gør de næste trin

Spol op og bryd en flok af den billige loddemetal fra spolen og læg den i stålfadet, og tænd derefter brænderen. Vent, indtil spolen smelter helt, og begynd derefter at fodre resten af loddetøjet i fadet i et moderat tempo. Hvis loddet har noget kolofonium i det, kan dette spontant forbrænde i varmen og frembringe en lysegul flamme og sort røg. Bare rolig, det er sket for mig flere gange og er helt normalt.

Fortsæt med at fodre loddetøjet i fadet, indtil det sidste er smeltet.

Lad alle flammer fra forbrænding af kolofonium dø helt ud, og brug tangen/tangen til at gribe fatet og forsigtigt hvirvle det smeltede metal indeni, mens det forsigtigt holdes i flammen.

Når du er sikker på, at alt loddet er fuldstændigt flydende og ved en god varm temperatur, fjernes det hurtigt og forsigtigt fra flammen og hældes i formen. Der vil være en høj hvæsende lyd og damp, da noget af vandet fordampes, og resten tvinges ud af formen for at blive erstattet af smeltet loddemetal.

Lad loddet afkøle, sluk for brænderen/blæs lyset og anbring stålfadet et sikkert sted at afkøle. Det kan være en god idé at hælde koldt vand over afkølingsloddet for at fremskynde afkøling og for at hærde det yderligere. (Det kolde vand får ydersiden til at afkøle hurtigere end indersiden, hvilket skaber indre spændinger, der gør metallet hårdere og stivere, svarende til en Prince Ruperts dråbe.) Du kan også løbe vand over dit metalfad, men det vil resultere i, at det bliver sprødt, især hvis det er gjort flere gange.

Når loddetøjet er afkølet helt (ca. 20 minutter for at være sikkert), fjernes det fra folieformen.

Min endte tykkere på den ene side end den anden, så jeg brugte en hammer til at udjævne den og flade kanterne (hvilket resulterer i den form, du ser på billederne). Jeg slibede den derefter let under rindende vand for at polere den og lagde den til side til senere.

Trin 3: Opbygning af elektronikhuset, trin 1

Opbygning af elektronikhuset, trin 1
Opbygning af elektronikhuset, trin 1
Opbygning af elektronikhuset, trin 1
Opbygning af elektronikhuset, trin 1
Opbygning af elektronikhuset, trin 1
Opbygning af elektronikhuset, trin 1
Opbygning af elektronikhuset, trin 1
Opbygning af elektronikhuset, trin 1

Dette er de dele til skallen, der vil huse Nano, montere grænsefladen og er dybest set det, der holder HALO -lampen sammen. Jeg lavede min med min 0,5 mm aluminium og varm lim, men hvis du har en 3D -printer (noget jeg har forsøgt at få til min butik i et stykke tid) lavede jeg en. STL -version i Tinkercad, som jeg vedhæftede her, så du kunne Hent. Da jeg ikke selv har en printer, var jeg ikke i stand til at testudskrive modellen for at se, om alt udskrives korrekt, men jeg synes, det burde være fint, hvis du tilføjer de korrekte understøttelsesstrukturer i din skiver. Du kan også kopiere og redigere kildefilen her, hvis du har brug for eller ønsker et lidt anderledes design eller æstetik.

Dimensionerne var faktisk afledt af den metalvægt, jeg støbte til mig selv af loddetin, ikke fra elektronikkens størrelse, men det blev alligevel ganske godt, og dimensionerne er ret optimale.

Billederne viser en lidt anden driftsorden end hvad jeg vil skrive her, det er fordi jeg har udtænkt en forbedret metode baseret på resultaterne af min originale metode.

Hvis du samler fra metalplader som jeg er, skal du gøre følgende:

Trin 1: Ansigtsplader

Skær to identiske halvcirkelformede former omkring 1,5 "høje og 3" brede. (Jeg frihåndede min, så de ligner lidt på forsiden af en jukeboks).

I en af de to plader bores de tre huller til knapperne og potentiometeret. Mine var hver 1/4 tommer i diameter. Disse kan være i ethvert layout, men jeg foretrækker, at mit potentiometer er lidt hævet i midten, hvor knapperne på hver side danner en ensartet trekant. Når jeg borer, laver jeg altid et lille pilothul, før jeg går til den nødvendige størrelse bit, det hjælper med at centrere hullerne og gør dem lidt renere.

Trin 2: Buet omslag

Bøj over et stykke aluminium, så det passer rundt om kurven på en af forsidepladerne, og markér den korrekte kantlængde.

Skær en strimmel af denne længde og ca. 2 tommer bred ud, og form den til en bue, der matcher formen på kurven på overfladepladerne på hver side.

Find midtpunktet øverst i kurven, og bor et hul, så det passer til lighterens flexhals. Jeg opvejer holet mod det bageste i min, fordi min lampe for det meste vil have halsen vippet fremad, mens den er i brug, så jeg ville tilføje lidt af en modvægt til det. Min fleksible hals var bare lidt over 1/4 inch i diameter, så jeg brugte en 1/4 inch bit (den største twist bit jeg ejer, der er under 3/4 inch) og vinklede og drejede forsigtigt forsigtigt bor for at 'bore' hullet ud, indtil nakken passer.

Nu hvor vi har delene til skallen, er det næste trin at tilføje elektronik og sætte det sammen!

Trin 4: Opbygning af elektronikhuset, trin 2

Opbygning af elektronikhuset, trin 2
Opbygning af elektronikhuset, trin 2
Opbygning af elektronikhuset, trin 2
Opbygning af elektronikhuset, trin 2
Opbygning af elektronikhuset, trin 2
Opbygning af elektronikhuset, trin 2
Opbygning af elektronikhuset, trin 2
Opbygning af elektronikhuset, trin 2

Nu tilføjer vi knapperne og potentiometeret, og sætter det hele sammen.

Trin 1: Knapper og bolte

Skru sekskantmøtrikkerne af dine knapper og potentiometer. Der skal være en griberingsenhed under møtrikken, lad den sidde på plads.

Slid hver af komponenterne gennem det respektive hul, og skru derefter møtrikkerne på igen for at fastgøre hver på plads. Spænd møtrikkerne til det punkt, hvor du er sikker på, at hver komponent er helt sikker.

Trin 2. Flex hals

Slip flexhalsen gennem hullet i toppen af det buede stykke. Varm lim eller svejsning (hvis du har udstyret) halsen sikkert på plads.

Hvis du bruger varm lim som jeg er, er det en god idé at lime den med masser af lim på begge sider spredt over et stort område for at forhindre, at limen løsner sig senere.

Trin 3: Skalsamling (gælder ikke 3D -printet skal)

Brug enten svejsestang eller varm lim til at fastgøre de forreste og bageste plader på deres respektive steder på det buede dæksel. Det tog mig et par forsøg for min lim at klistre, og som før er tricket at bruge masser af lim på begge sider af leddet, ligesom nakken. Jo større område dækket af limen er, jo bedre vil den klæbe.

Nu hvor vi har skallen, kan vi gå videre med at tilføje alle kredsløbsbitene.

Trin 5: Tilføjelse af elektronik

Tilføjelse af elektronik
Tilføjelse af elektronik
Tilføjelse af elektronik
Tilføjelse af elektronik
Tilføjelse af elektronik
Tilføjelse af elektronik

Og her er den sjove del: Lodning! I de seneste uger er jeg ærligt talt blevet lidt træt af lodning, fordi jeg har gjort det så meget på det sidste for at prøve at afslutte et andet projekt, jeg snart skulle lægge op (hold øje med en radikaliseret ny version af mit robotdisplay platforme), hvilket resulterer i, at jeg ødelægger et jern og får et andet … Alligevel er der ikke meget at lodde her, så det burde være ret ligetil.

Bemærk: Hvis din Nano allerede har pinhoveder på den, vil jeg anbefale at aflodde dem til dette projekt, de kommer kun i vejen.

Der er et diagram i billederne ovenfor, det kan du følge, hvis du vil.

Trin 1: Interface

Fra hver af kontakterne loddes en ledning fra en enkelt stift til en sidestift på potentiometeret. Lod en ledning fra den samme sidestift til en jordstift på Nano.

Lod en ledning fra potentiometerets midterstift til A0 på Nano.

Lod en ledning fra den ikke -tilsluttede pin på enten switch til A1 på Nano.

Lod en ledning fra den ikke -tilsluttede pin på den anden switch til A2 på Nano.

Bemærk: Det er ligegyldigt hvilken switch der er, du kan nemt ændre dem i koden, udover at den ene switch simpelthen gør det modsatte af den anden.

Klip en ledningslængde 4 tommer længere end bøjningshalsen, og fjern begge sider. Brug en Sharpie til at markere den ene side med en enkelt linje.

Lod en ledning til den sidste ikke -tilsluttede sidestift på potentiometeret, vrid den ledning, der ikke er forbundet, sammen med den umærkede ende af tråden fra det sidste deltrin.

Lodde denne sammenføjede ende til 5V på Nano.

Trin 2: Display og strømledninger

Klip 2 trådlængder 4 tommer længere end bøjningshalsen, og fjern begge ender.

Brug en Sharpie til at markere enderne af hver ledning, en ledning med 2 linjer og en med 3.

Lod ledningen med 2 linjer til digital pin 9 på Nano.

På din 5 mm tønde jack, loddes en ledning fra centerpinden (positiv) til Vin på Nano.

Lod en anden ledning til en sidestift (jord/negativ) på tøndejakken.

Drej den lange ledning sammen med 3 linier sammen med tråden fra sidetappen på tøndejacket.

Lod disse tråde til den åbne GND -pin på Nano.

Isoler forbindelser med elektrisk tape eller varm lim, hvor det er nødvendigt.

Trin 3: Skæring af huller (kun på metalversionen, hvis du 3D -printede omslaget, skulle det være fint)

Brug et bor og en X-acto eller værktøjskniv til omhyggeligt at lave et hul i siden af dækslet til USB-porten på Nano.

Lav et andet hul på størrelse med tøndejakkens overflade på bagsiden af dækslet, helst tættere på siden modsat hullet til USB -porten.

Trin 4: Monteringskomponenter

Før de tre lange ledninger gennem flexhalsen og ud på den anden side.

Brug masser af varm lim til at montere tøndejakken på plads med stifterne mod toppen af dækslet.

Igen med masser af varm lim skal du montere Nano på plads med nulstillingsknappen nedad og USB -porten i dens slot. Jeg lavede en "hot lim bridge" mellem tøndejacket og Nano, som får hver til at holde den anden fast på plads.

Nu kan vi gå videre med at lave den vægtede base!

Trin 6: Vægtet base

Vægtet base
Vægtet base
Vægtet base
Vægtet base
Vægtet base
Vægtet base

Jeg er sikker på mine loddeevner og havde det godt planlagt, så jeg gik videre og tilføjede basen, inden jeg testede koden. Hvis du er mindre sikker på dine færdigheder, vil jeg foreslå at springe dette trin over og vende tilbage til det i slutningen, når du ved, at alt fungerer.

Hvis du lavede den 3D -trykte version, kan du springe det første trin over og gå videre til det andet.

Trin 1: Træ

Fra et ark med 1/4 tommer krydsfiner, skær en base omkring 3 tommer med 2 tommer.

Slib kanterne for at glatte dem ud og fjern boringer.

Trin 2: Vægt

Først skal du sikre dig, hvilken vægt du ønsker, det være sig, at en magnet, et metal eller en skræddersyet loddemetal passer inden for kanterne på det metaldæksel, vi har lavet. Min var lidt stor i den ene retning, så jeg barberede mig lidt fra siden med en X-acto kniv. Hvis din ikke er den slags, hvor du kan gøre dette, skal du muligvis rode rundt med et andet grunddesign.

Varm lim din vægt i midten af krydsfinerstykket eller i tilfælde af 3D -printet design i det midterste "bakke" -område, jeg designede til dette formål.

Trin 3: Base

Monter metalkappen over vægten og centrer den på træbunden. (Når det drejer sig om et 3D-printet design, skal det monteres i de præfabrikerede riller.)

Sørg for, at vægten ikke forstyrrer elektronikken

Brug varm lim til at fastgøre bunden på plads. Brug nok til at sikre en fast forbindelse.

Nu hvor vi har vores kontrolboks helt lavet, lad os gå videre til lysene.

Trin 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 til navnet på denne lampe, denne del er NeoPixel haloringen, som vi vil bruge som vores kilde til belysning. Dette særlige stykke kan om ønsket ændres eller udskiftes med enhver NeoPixel eller individuelt adresserbar LED -ring.

Trin 1: Lodning

Klip en strimmel NeoPixels 12 lysdioder i længden.

Lod lod GND -stiften til ledningen fra flexhalsen, der har 3 linjer.

Lod din pin til ledningen, der har 2 linjer.

Lod den 5V pin til ledningen, der har 1 linje.

Trin 2: Test lysene

Download og installer Adafruit_NeoPixel -biblioteket, og åbn "strengtest" -koden.

Skift konstant PIN til 9.

Skift linjen, hvor strimlen er defineret, så den er konfigureret til 12 lysdioder.

Upload koden til Nano, og sørg for, at alle dine lysdioder fungerer korrekt.

Udskift eventuelle defekte lysdioder med lysdioder, indtil hele strimlen fungerer.

Trin 3: Ring

Tag den øverste ring fra en "Stick and Click" -lampe, og afskær eventuelle skruemonteringer på den indvendige kant.

Skær et lille hak på kanten til ledningerne fra strimlen.

Fjern dækslet til klæbebåndet på bagsiden af NeoPixels (hvis nogen), og sæt dem inde i ringen, med hver ende af strimlen lige ved det hak, vi lavede.

Brug varm lim til at fastgøre strimlens kanter

Efter at limen er afkølet helt, skal du teste pixels igen. Dette er for at sikre, at ingen er kræsne om varmen og curling (et par af mine var).

Trin 4: Monter

Skær to små rektangler af 1/4 tommer træ ud, omkring ringens højde og 1 2/3 gange så brede.

Lim disse parallelt med hinanden på hver side af ledningerne fra ringen, udfyld hullet og dæk ledningerne mellem helt med lim.

Skub forsigtigt overskydende trådlængde tilbage i flexhalsen, og lim derefter træstykkerne på enden af halsen, brug masser af lim og fyld forsigtigt eventuelle huller (uden at fylde halsen med lim).

Trin 6: Afslutning

Du kan male ringen og montere enhver farve, hvis du vil, jeg foretrak sølvfinishen, så jeg brugte kun en Sharpie til at dække over logoet, der (irriterende) blev trykt på ringen. Det samme gælder resten af lampen.

Nu kan vi fortsætte med at afslutte med den sidste kode!

Trin 8: Koder og tests

Koder og tests
Koder og tests
Koder og tests
Koder og tests

Så nu skal vi bare programmere lampen og teste den. Vedhæftet er den aktuelle kodeversion (rev1.0), jeg har testet denne kode ganske omfattende, og den fungerer meget godt. Jeg arbejder på en rev2.0, hvor knapperne er konfigureret som eksterne afbrydelser, så tilstande lettere kan skiftes mellem, men denne version er buggy og endnu ikke klar til udgivelse. Med den aktuelle version skal du holde knappen nede, indtil den kører Debounce -løkken og genkender tilstandsændringen, hvilket kan være irriterende på de længere "dynamiske" sløjfer. Nedenfor er koden med nogle forklaringer skrevet i (der er de samme forklaringer i den downloadbare version).

#include #ifdef _AVR_ #include #endif

#definer PIN 9

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

// Parameter 1 = antal pixels i strimmel

// Parameter 2 = Arduino pin -nummer (de fleste er gyldige) // Parameter 3 = pixeltypeflag, tilføj efter behov: // NEO_KHZ800 800 KHz bitstream (de fleste NeoPixel -produkter m/WS2812 lysdioder) // NEO_KHZ400 400 KHz (klassisk ' v1 '(ikke v2) FLORA -pixels, WS2811 -drivere) // NEO_GRB Pixels er tilsluttet GRB -bitstrøm (de fleste NeoPixel -produkter) // NEO_RGB Pixels er tilsluttet RGB -bitstrøm (v1 FLORA -pixels, ikke v2) // NEO_RGBW Pixels er kablet til RGBW bitstream (NeoPixel RGBW -produkter) Adafruit_NeoPixel halo = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800);

// Og nu en sikkerhedsmeddelelse fra vores venner på Adafruit:

// VIGTIGT: Tilføj 1000 uF kondensator på tværs for at reducere risikoen for NeoPixel -udbrændthed

// pixel strømledninger, tilføj 300 - 500 Ohm modstand på den første pixels dataindgang // og minimer afstanden mellem Arduino og første pixel. Undgå tilslutning // på et strømførende kredsløb … hvis du skal, skal du først tilslutte GND.

// Variabler

int buttonState1; int buttonState2; // den aktuelle aflæsning fra input -pin int lastButtonState1 = LOW; // den forrige læsning fra input -pin int lastButtonState2 = LOW; int mode; // tilstanden for vores lys, kan være en af 16 indstillinger (0 til 15) int brightVal = 0; // lysstyrke/ hastighed, som indstillet af potentiometeret

// følgende variabler er lange, fordi tiden målt i milisekunder

// vil hurtigt blive et større tal, end der kan gemmes i en int. lang lastDebounceTime = 0; // sidste gang output -pin blev skiftet lang debounceDelay = 50; // afvisningstiden; øges, hvis output flimrer

void debounce () {

// læs omskifterens tilstand til en lokal variabel: int reading1 = digitalRead (BUTTON1); int reading2 = digitalRead (BUTTON2); // Hvis en af knapperne blev ændret på grund af støj eller tryk: if (reading1! = LastButtonState1 || reading2! = LastButtonState2) {// reset the the bouncing timer lastDebounceTime = millis (); } hvis ((millis () - lastDebounceTime)> debounceDelay) {// hvis knapstatus bestemt er ændret på grund af tryk/slip: if (reading1! = buttonState1) {buttonState1 = reading1; // indstil den som læsning, hvis den er ændret, hvis (buttonState1 == LOW) {// disse er indstillet som aktiv lav switches -tilstand ++; hvis (mode == 16) {mode = 0; }}} if (reading2! = buttonState2) {buttonState2 = reading2; hvis (buttonState2 == LOW) {mode = mode - 1; hvis (tilstand == -1) {tilstand = 15; }}}}} // gem læsningen til næste gang gennem sløjfen lastButtonState1 = læsning1; lastButtonState2 = læsning2; }

void getBright () {// vores kode til at læse potentiometeret, udsender en værdi mellem 0 og 255. Bruges til at indstille lysstyrke i nogle tilstande og hastighed i andre.

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

// Her er vores farveindstillinger. Nogle af disse er afledt af det strengeste eksempel, andre er originale.

// Fyld prikkerne den ene efter den anden med en farve (colorwipe, afledt af strengtest)

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

// regnbue funktioner (også afledt af strandtest)

ugyldig regnbue (uint8_t vent) {

uint16_t i, j;

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

// Lidt anderledes, dette gør regnbuen ligeligt fordelt overalt

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

for (j = 0; j <256*5; j ++) {// 5 cykler af alle farver på hjulet for (i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, Wheel (((i * 256 / halo.numPixels ()) + j) & 255)); } halo.show (); forsinkelse (vent); }}

// Indtast en værdi 0 til 255 for at få en farveværdi.

// Farverne er en overgang r - g - b - tilbage til r. uint32_t Wheel (byte WheelPos) {WheelPos = 255 - WheelPos; hvis (WheelPos <85) {return halo. Color (255 - WheelPos * 3, 0, WheelPos * 3); } hvis (WheelPos <170) {WheelPos -= 85; return halo. Color (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; return halo. Color (WheelPos * 3, 255 - WheelPos * 3, 0); }

ugyldig opsætning () {

// Dette er for Trinket 5V 16MHz, du kan fjerne disse tre linjer, hvis du ikke bruger en Trinket #if defineret (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Slut på specialpinkode pinMode (POT, INPUT); pinMode (BUTTON1, INPUT_PULLUP); pinMode (BUTTON2, INPUT_PULLUP); pinMode (PIN, OUTPUT); Serial.begin (9600); // debugging stuff halo.begin (); halo.show (); // Initialiser alle pixels til 'off'}

void loop () {

debounce ();

//Serial.println(mode); // mere fejlfinding //Serial.println(lastButtonState1); //Serial.println(lastButtonState2);

hvis (tilstand == 0) {

getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, brightVal)); // indstil alle pixels til hvid} halo.show (); }; hvis (mode == 1) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, 0)); // indstil alle pixels til rød} halo.show (); }; hvis (mode == 2) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, 0)); // indstil alle pixels til grøn} halo.show (); }; hvis (mode == 3) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, 0, brightVal)); // indstil alle pixels til blå} halo.show (); }; hvis (mode == 4) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, brightVal)); // indstil alle pixels til cyan} halo.show (); }; hvis (mode == 5) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, brightVal)); // indstil alle pixels til lilla/magenta} halo.show (); }; hvis (mode == 6) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, 0)); // indstil alle pixels til orange/gul} halo.show (); }; hvis (mode == 7) {// nu bliver de dynamiske tilstande getBright (); colorWipe (halo. Color (brightVal, 0, 0), 50); // Rød}; hvis (mode == 8) {getBright (); colorWipe (halo. Color (0, brightVal, 0), 50); // Grøn}; hvis (mode == 9) {getBright (); colorWipe (halo. Color (0, 0, brightVal), 50); // Blå}; hvis (mode == 10) {getBright (); colorWipe (halo. Color (brightVal, brightVal, brightVal), 50); // hvid }; hvis (mode == 11) {getBright (); colorWipe (halo. Color (brightVal, brightVal, 0), 50); // orange/gul}; hvis (mode == 12) {getBright (); colorWipe (halo. Color (0, brightVal, brightVal), 50); // cyan}; hvis (mode == 13) {getBright (); colorWipe (halo. Color (brightVal, 0, brightVal), 50); // lilla/magenta}; hvis (mode == 14) {// de to sidste er hastighedskontrol, fordi lysstyrken er dynamisk getBright (); regnbue (brightVal); }; hvis (mode == 15) {getBright (); rainbowCycle (brightVal); }; forsinkelse (10); // lad processoren hvile lidt}

Trin 9: Den store finale

Den store finale
Den store finale

Og nu har vi en fantastisk, super-lys lille lampe!

Du kan ændre det yderligere herfra eller lade det være, som det er. Du kan ændre koden eller endda skrive en ny helt. Du kan forstørre basen og tilføje batterier. Du kan tilføje en fan. Du kan tilføje flere NeoPixels. Listen over alt hvad du kan gøre med dette er næsten uendelig. Jeg siger "næsten", fordi jeg er ret sikker på, at vi stadig ikke har teknologien til at konvertere dette til en mini -portalgenerator (desværre), men bortset fra sådanne ting er den eneste grænse din fantasi (og til en vis grad, som jeg har fundet for nylig, værktøjerne i dit værksted). Men hvis du ikke har værktøjerne, lad det ikke stoppe dig, hvis du virkelig vil gøre noget, er der altid en måde.

Det er en del af pointen med dette projekt, for at bevise for mig selv (og i mindre grad verden), at jeg kan lave nyttige ting, som andre mennesker også kunne tænke sig, selvom alt, hvad jeg har, er en sand skraldespand af gammelt og skrotet komponenter og en beholder med Arduino -forsyninger.

Jeg går herfra, for jeg synes, at det her er blevet ret godt. Hvis du har et forslag til forbedring eller et spørgsmål om mine metoder, kan du efterlade en kommentar herunder. Hvis du lavede dette, tag et billede, vi vil alle gerne se det!

Glem ikke at stemme, hvis du kan lide dette!

Som altid er det projekterne for Dangerously Explosive, hans livslange mission, "At frimodigt bygge det, du vil bygge, og mere!"

Du kan finde resten af mine projekter her.

Tak fordi du læste, og Happy Making!

Anbefalede: