Kazalo:

HALO: Priročna svetilka Arduino Rev1,0 W/NeoPixels: 9 korakov (s slikami)
HALO: Priročna svetilka Arduino Rev1,0 W/NeoPixels: 9 korakov (s slikami)

Video: HALO: Priročna svetilka Arduino Rev1,0 W/NeoPixels: 9 korakov (s slikami)

Video: HALO: Priročna svetilka Arduino Rev1,0 W/NeoPixels: 9 korakov (s slikami)
Video: как сделать, беспроводной светодиод, беспроводное зарядное устройство, эксперимент 2024, September
Anonim
Image
Image
HALO: Priročna svetilka Arduino Rev1,0 W/NeoPixels
HALO: Priročna svetilka Arduino Rev1,0 W/NeoPixels
HALO: Priročna svetilka Arduino Rev1,0 W/NeoPixels
HALO: Priročna svetilka Arduino Rev1,0 W/NeoPixels

V tem navodilu vam bom pokazal, kako zgraditi HALO ali Handy Arduino Lamp Rev1.0.

HALO je preprosta svetilka, ki jo poganja Arduino Nano. Ima skupni odtis približno 2 "za 3" in tehtano leseno podlago za izjemno stabilnost. Prilagodljiv vrat in 12 super svetlih neopikslov omogočajo enostavno osvetlitev vseh podrobnosti na kateri koli površini. HALO ima dva gumba za premikanje po različnih svetlobnih načinih, od katerih je 15 vnaprej programiranih. Zaradi uporabe Arduino Nano kot procesorja ga lahko znova programirate z dodatnimi funkcijami. Enojni potenciometer se uporablja za prilagajanje svetlosti in/ali hitrosti prikaza načina. Zaradi preproste kovinske konstrukcije je HALO zelo trpežna svetilka, primerna za uporabo v kateri koli delavnici. Enostavnost uporabe povezuje tudi vgrajen regulator moči Nano, zato lahko HALO napajate prek USB -ja ali standardnega 5 -milimetrskega priključka na zadnji strani.

Upam, da bom v bližnji prihodnosti videl veliko ljudi, ki bodo uporabljali te svetilke, ker se s to zasnovo odpira toliko možnosti. Prosimo, pustite svoj glas na natečaju za mikrokrmilnik, če vam je to všeč ali se vam zdi na kakšen način uporabno, bi bil zelo hvaležen.

Preden se lotimo tega Instructable, bi se rad na kratko zahvalil vsem svojim sledilcem in vsem, ki so kdaj komentirali, dali med priljubljene ali glasovali o katerem od mojih projektov. Zahvaljujoč vam je moj kartonski pouk dosegel velik uspeh in po mojem mnenju sem, ko sem to napisal, dosegel skoraj 100 privržencev, velik mejnik. Resnično cenim vso podporo, ki jo dobim od vas, ko postavim svoj Ible's, in ko pride do tega, brez vas ne bi bil tam, kjer sem danes. Ob tem hvala vsem!

OPOMBA: V tem navodilu so stavki krepki. To so pomembni deli vsakega koraka in jih ne smemo prezreti. Ne kričim ali namerno neumnost, preprosto poskušam novo tehniko pisanja, da bi bolje poudaril, kaj je treba narediti. Če vam ni všeč in vam je ljubše, kako sem prej pisal svoje korake, mi to sporočite v komentarjih, pa se bom vrnil v svoj stari slog.

1. korak: Zbiranje materialov

Zbiranje materialov
Zbiranje materialov
Zbiranje materialov
Zbiranje materialov
Zbiranje materialov
Zbiranje materialov
Zbiranje materialov
Zbiranje materialov

Kolikokrat moram to povedati? Vedno imejte tisto, kar potrebujete, in zagotovo boste lahko nekaj dokončali do konca.

Opomba: Nekatere od teh so partnerske povezave (označene z "al"). Če kupite prek njih, bom dobil majhen povratni udarec, brez dodatnih stroškov. Hvala, če kupujete prek povezav

Deli:

1x Arduino Nano Nano - al

1x 10k rotacijski potenciometer 5 paketov 10k potenciometrov - al

1x priključek za sod 5 mm (moj je recikliran iz ocvrtega Arduino Uno) Samski sod za vtičnico (5 kosov) - al

2x 2-polni trenutni gumbi 10 paketov Stikalo s stikalom SPST-al

12x NeoPixels iz 60 LED/meter pramena (kateri koli enakovreden, na primer WS2812B, bo deloval) Adafruit NeoPixels

Aluminijasta pločevina 0,5 mm

Prilagodljiv vrat iz starega vžigalnika

Zgornji pokrov iz LED svetilke LED "Stick and Click" LED Cabinet Light - al

Majhen list 1/4 palca vezanega lesa

Težka, ravna kovinska teža dimenzij (približno) 1,5 "2,5" do 0,25"

Električna žica z navojem jedra

Orodja:

Pištola in lepilo za vroče lepilo

Spajkalnik in spajkanje

Akumulatorski vrtalnik in različni majhni zvitki

X-acto nož (ali pomožni nož)

Odstranjevalci žice

Klešče

Rezalniki/drobci žice

Težke škarje

Če nimate ravno kovinske teže, potrebujete tudi:

1 zvitek poceni spajkanja (ne stvari, ki jih boste uporabljali za spajkanje) Poceni spajkalnik brez svinca

Alkoholna sveča (ali gorilnik Bunsen)

Majhna kaljena jeklena posoda, ki je ne bi smeli uničiti (ali majhen lonček, če ga imate)

Stativ za omenjeno posodo/lonček (svojega sem naredil iz jeklene žice 12 gabaritov)

Glinena posoda za rastline (ena tistih stvari, ki gredo pod lonec)

Nekaj aluminijaste folije

OPOMBA: Če imate varilni komplet ali 3D tiskalnik, morda ne boste potrebovali vseh tukaj navedenih orodij.

2. korak: Ustvarjanje teže

Ustvarjanje teže
Ustvarjanje teže
Ustvarjanje teže
Ustvarjanje teže
Ustvarjanje teže
Ustvarjanje teže

To je precej težaven korak in pri tem morate biti zelo previdni. Če imate težo kovine ali ploski neodim magnet približno 2,75 "za 1,75" za 0,25 ", priporočam, da ga uporabite namesto tega (magnet bi vam celo omogočil, da svetilko postavite na stran na kovinske površine!).

Izjava o omejitvi odgovornosti: Ne odgovarjam za vaše poškodbe, zato vas prosimo, da uporabite zdrav razum

Naredite to tudi zunaj nad betonsko površino, ki vam ne bo motila, če se nekoliko opeče (to je samo previdnostni ukrep). Za ta postopek nimam slik, ker bi fotoaparat dodatno odvrnil pozornost, ki je nisem potreboval ali si želel.

Najprej naredite majhen kalup iz aluminijaste folije ali mokre gline, približno 2 3/4 palca po 1 3/4 palca po 1/4 palca v notranjih dimenzijah. Lahko je jajčaste oblike, kot je moja, ali pravokotnika. Uporabite več plasti folije ali debele plasti gline.

Kalup postavite v keramično posodo za rastline in napolnite tako kalup kot pladenj s hladno vodo.

Vzemite neosvetljeno alkoholno svečo/gorilnik bunsen in postavite jekleno posodo/lonček na stojalo, da bo plamen segrel sredino posode (ko prižge). Pred prižiganjem gorilnika se prepričajte, da imate pri roki vsaj 1 par klešč ali klešč za obdelavo kovin, če ne 2.

Pri naslednjih nekaj korakih je dobro, da nosite usnjene rokavice, dolge rokave, dolge hlače, zaprte čevlje in zaščito za oči

Zvijte in odcepite kup poceni spajkanja iz tuljave in ga položite v jekleno posodo, nato prižgite gorilnik. Počakajte, da se tuljava popolnoma stopi, nato pa zmerno vstavite preostanek spajkanja v posodo. Če je v spajki kolofonija, lahko ta v vročini spontano izgori in povzroči bledo rumen plamen in črni dim. Brez skrbi, to se mi je zgodilo večkrat in je povsem normalno.

Spajkajte v posodo, dokler se zadnja ne stopi.

Pustite, da vsi plameni iz sežiganja kolofonije popolnoma izginejo in s kleščami/kleščami primite posodo in rahlo vrtite staljeno kovino v notranjosti, pri tem pa jo previdno držite v plamenu.

Ko ste prepričani, da je vsa spajka popolnoma utekočinjena in pri dobri vroči temperaturi, jo hitro in previdno odstranite z ognja in prelijte v kalup. Ko nekaj vode izhlapi, preostanek pa iztisne iz kalupa, da ga nadomesti staljeno spajkanje.

Pustite, da se spajka ohladi, izklopite gorilnik/upihnite svečo in postavite jekleno posodo na varno mesto, kjer se lahko ohladi. Hladilni spajkalnik lahko polijete s hladno vodo, da pospešite hlajenje in ga dodatno utrdite. (Hladna voda omogoča, da se zunaj hitreje ohladi kot notranjost, kar ustvarja notranjo napetost, ki naredi kovino trdnejšo in trdnejšo, podobno kot kapljica princa Ruperta.) Lahko tudi polijete vodo po svoji kovinski posodi, vendar bo zaradi tega postala krhka, še posebej, če je izvedeno večkrat.

Ko se spajkalnik popolnoma ohladi (približno 20 minut, da je varen), ga odstranite iz kalupa za folijo.

Moja je bila na eni strani debelejša od druge, zato sem s kladivom poravnala in poravnala robove (kar je povzročilo obliko, ki jo vidite na slikah). Nato sem ga rahlo brusila pod tekočo vodo, da sem ga polirala, in ga dala na stran za kasneje.

3. korak: Gradnja ohišja za elektroniko, 1. korak

Gradnja ohišja za elektroniko, 1. korak
Gradnja ohišja za elektroniko, 1. korak
Gradnja ohišja za elektroniko, 1. korak
Gradnja ohišja za elektroniko, 1. korak
Gradnja ohišja za elektroniko, 1. korak
Gradnja ohišja za elektroniko, 1. korak
Gradnja ohišja za elektroniko, 1. korak
Gradnja ohišja za elektroniko, 1. korak

To so deli lupine, v katerih bo nameščen Nano, nameščen vmesnik in je v bistvu tisto, kar drži svetilko HALO skupaj. Jaz sem svojega naredil z mojim 0,5 mm aluminijastim in vročim lepilom, če pa imate 3D tiskalnik (nekaj, kar sem si že nekaj časa prizadeval kupiti za svojo trgovino), sem naredil različico. STL v Tinkercadu, ki sem vam jo priložil tukaj Prenesi. Ker sam nimam tiskalnika, modela nisem mogel preizkusiti, da bi preveril, ali se vse natisne pravilno, vendar mislim, da bi moralo biti v redu, če v rezalnik dodate ustrezne podporne strukture. Tu lahko tudi kopirate in uredite izvorno datoteko, če potrebujete ali želite nekoliko drugačen dizajn ali estetiko.

Mere so dejansko izhajale iz teže kovine, ki sem si jo vlil iz spajkanja, ne pa iz velikosti elektronike, vendar se je vseeno izkazalo za zelo dobro in mere so precej optimalne.

Slike prikazujejo nekoliko drugačen vrstni red delovanja od tistega, kar bom zapisal tukaj, ker sem razvil izboljšano metodo, ki temelji na rezultatih moje prvotne metode.

Če sestavljate pločevino, kot sem jaz, morate narediti naslednje:

Korak: Obrazne plošče

Izrežite dve enaki polkrožni obliki, približno 1,5 "visoki in 3" široki. (Svojo sem dal prostoročno, zato izgledajo nekoliko kot sprednji del juke boxa).

V eni od dveh plošč izvrtajte tri luknje za gumbe in potenciometer. Moji so bili premera 1/4 palca. Te so lahko v kateri koli postavitvi, vendar imam raje, da je potenciometer rahlo dvignjen v sredini, pri čemer gumbi na obeh straneh tvorijo enakokraki trikotnik. Pri vrtanju vedno naredim majhno pilotsko luknjo, preden grem na zahtevano velikost, to pomaga centrirati luknje in jih naredi nekoliko čistejše.

2. korak: obokan pokrov

Upognite kos aluminija, da se prilega krivulji ene od sprednjih plošč, in označite ustrezno dolžino roba.

Izrežite trak te dolžine in širine približno 2 cm in ga oblikujte v lok, ki ustreza obliki krivulje sprednjih plošč na obeh straneh.

Poiščite osrednjo točko na vrhu krivulje in izvrtajte luknjo, da se prilega upogibnemu vratu vžigalnika. Luknjo sem premaknil proti zadnjemu delu mojega, ker bo med uporabo svetilke večinoma nagnjen vrat naprej, zato sem želel temu dodati malo protiuteža. Moj fleksibilen vrat je bil premera nekaj več kot 1/4 palca, zato sem uporabil 1/4 palca (največji zvitek, ki ga imam, ki je manjši od 3/4 palca) in le previdno nagnil in zvil izvrtajte, da "izvrtate" luknjo, dokler se vrat ne prilega.

Zdaj, ko imamo dele za lupino, je naslednji korak dodati elektroniko in jo sestaviti!

4. korak: Gradnja ohišja za elektroniko, 2. korak

Gradnja ohišja za elektroniko, 2. korak
Gradnja ohišja za elektroniko, 2. korak
Gradnja ohišja za elektroniko, 2. korak
Gradnja ohišja za elektroniko, 2. korak
Gradnja ohišja za elektroniko, 2. korak
Gradnja ohišja za elektroniko, 2. korak
Gradnja ohišja za elektroniko, 2. korak
Gradnja ohišja za elektroniko, 2. korak

Zdaj dodamo gumbe in potenciometer ter vse skupaj sestavimo.

1. korak: Gumbi in vijaki

Odvijte šestkotne matice s tipk in potenciometra. Pod matico mora biti naprava za oprijem, pustite jo na mestu.

Vsako komponento potisnite skozi ustrezno luknjo in nato privijte matice, da pritrdite vsako na svoje mesto. Zategnite matice do točke, ko ste prepričani, da je vsaka komponenta popolnoma varna.

Korak 2. Upogljiv vrat

Upognite fleksibilni vrat skozi luknjo na vrhu ukrivljenega kosa. Vroče lepilo ali varite (če imate opremo) vrat na svojem mestu.

Če uporabljate vroče lepilo, kot sem jaz, je dobro, da ga z obeh strani nalepite na veliko površino lepila, da preprečite, da bi se lepilo pozneje odlepilo.

3. korak: Montaža lupine (ne velja za 3D natisnjeno lupino)

Z varilno palico ali vročim lepilom pritrdite sprednjo in zadnjo sprednjo ploščo na ustrezna mesta na obokanem pokrovu. Nekaj poskusov je trajalo, da se mi lepilo zlepi, in tako kot prej je trik v tem, da na obeh straneh sklepa uporabim veliko lepila, tako kot vrat. Večja je površina, ki jo pokriva lepilo, bolje se bo lepilo.

Zdaj, ko imamo lupino, lahko nadaljujemo z dodajanjem vseh bitov vezja.

5. korak: Dodajanje elektronike

Dodajanje elektronike
Dodajanje elektronike
Dodajanje elektronike
Dodajanje elektronike
Dodajanje elektronike
Dodajanje elektronike

In tu je zabaven del: Spajkanje! V zadnjih tednih sem se iskreno nekoliko naveličal spajkanja, ker sem to v zadnjem času toliko počel, da bi poskušal dokončati še en projekt, ki bi ga moral kmalu pripraviti (pazi na radikalizirano novo različico svojega robotskega zaslona platforme), zaradi česar sem uničil eno železo in dobil drugo … Kakorkoli, tukaj ni veliko za spajkanje, zato bi moralo biti to precej preprosto.

Opomba: Če ima vaš Nano že pripete glave, priporočam, da jih razpakirate za ta projekt, le ovirali vas bodo.

Na zgornjih slikah je diagram, ki mu lahko sledite, če želite.

1. korak: Vmesnik

Iz vsakega stikala spajkajte žico z enega samega zatiča na stranski zatič potenciometra. Spajajte žico s tega istega stranskega zatiča na ozemljitveni zatič na Nano.

Spajajte žico od osrednjega zatiča potenciometra do A0 na Nano.

Spajate žico iz nepovezanega zatiča katerega koli stikala na A1 na Nano.

Spajajte žico iz nepovezanega zatiča na drugem stikalu na A2 na Nano.

Opomba: Ni važno, katero stikalo je, lahko jih zelo preprosto spremenite v kodi, poleg tega, da eno stikalo preprosto deluje nasprotno od drugega.

Odrežite dolžino žice 4 centimetre dlje od upogljivega vratu in odstranite obe strani. S Sharpiejem označite eno stran z eno vrstico.

Spajate žico na zadnji nepovezani stranski zatič potenciometra, nepovezani konec te žice zvijte skupaj z neoznačenim koncem žice iz zadnjega podstopa.

Spajkajte ta spojeni konec na 5V na Nano.

Korak: Zaslon in napajalne žice

Odrežite 2 dolžini žice, 4 centimetre daljše od upogljivega vratu, in odstranite oba konca.

S pomočjo Sharpieja označite konce vsake žice, eno žico z 2 črtama in eno s 3.

Spajajte žico z 2 linijama na digitalni pin 9 na Nano.

Na 5 mm priključku za cev spajkajte žico od osrednjega zatiča (pozitivnega) do Vina na Nano.

Spajate drugo žico na stranski zatič (ozemljitev/minus) priključka za cev.

Dolgo žico zavrtite s 3 črtami skupaj z žico s stranskega zatiča cevne vtičnice.

Spajite te žice na odprti zatič GND na Nano.

Po potrebi izolirajte povezave z električnim trakom ali vročim lepilom.

3. korak: Rezanje lukenj (samo v kovinski različici, če ste 3D natisnili naslovnico, bi morali biti v redu)

S svedrom in X-acto ali pomožnim nožem previdno naredite luknjo na strani pokrova za vrata USB Nano.

Na hrbtni strani pokrova naredite še eno luknjo velikosti sprednje strani priključka za cev, po možnosti bližje strani nasproti luknje za vrata USB.

4. korak: Montaža komponent

Tri dolge žice napeljite skozi upogljiv vrat in ven na drugo stran.

Z veliko vročega lepila pritrdite cevno vtičnico tako, da so zatiči obrnjeni proti vrhu pokrova.

Ponovno z veliko vročega lepila namestite Nano tako, da bo gumb za ponastavitev obrnjen navzdol in vrata USB v reži. Naredil sem "most z vročim lepilom" med vtičnico cevi in Nano, zaradi česar drug drugega držita trdno na mestu.

Zdaj lahko nadaljujemo z izdelavo tehtane osnove!

6. korak: Utežena podlaga

Utežena podlaga
Utežena podlaga
Utežena podlaga
Utežena podlaga
Utežena podlaga
Utežena podlaga

Prepričan sem v svoje sposobnosti spajkanja in sem imel to dobro načrtovano, zato sem pred preizkušanjem kode dodal osnovo. Če niste prepričani v svoje sposobnosti, predlagam, da ta korak preskočite in se na koncu vrnete, ko veste, da vse deluje.

Če ste naredili 3D tiskano različico, lahko prvi korak preskočite in se pomaknete na drugega.

Korak: Les

Iz lista vezanega lesa 1/4 palca izrežite podlago približno 3 cm za 2 palca.

Robove obrusite, da jih zgladite in odstranite izbokline.

2. korak: Teža

Najprej se prepričajte, da ste izbrali svojo težo, pa naj bo magnet, kovina ali pajk po meri, nameščen na robovih kovinskega pokrova, ki smo ga izdelali. Moj je bil v eni smeri nekoliko velik, zato sem se s strani noža X-acto malo obril. Če vaše ni tisto, kjer to lahko storite, se boste morda morali poigrati z drugo osnovno zasnovo.

Vroče lepite svojo težo na sredino kosa vezanega lesa, ali v primeru 3D tiskanega dizajna, na sredino "pladnja", ki sem ga oblikoval za ta namen.

3. korak: Osnova

Kovinski pokrov namestite na utež in ga centrirajte na leseno podlago. (V primeru 3D tiskanega dizajna ga vstavite v vnaprej izdelane utore.)

Prepričajte se, da teža ne vpliva na elektroniko

Za pritrditev podlage uporabite vroče lepilo. Uporabite dovolj, da zagotovite trdno povezavo.

Zdaj, ko imamo v celoti izdelano krmilno omarico, preidimo na luči.

7. korak: NeoPixel Halo Ring

Halo prstan NeoPixel
Halo prstan NeoPixel
Halo prstan NeoPixel
Halo prstan NeoPixel
Halo prstan NeoPixel
Halo prstan NeoPixel
Halo prstan NeoPixel
Halo prstan NeoPixel

Navdih za ime te svetilke, ta del je halo prstan NeoPixel, ki ga bomo uporabili kot vir osvetlitve. Ta poseben kos lahko po želji spremenite ali zamenjate s katerim koli LED obročem NeoPixel ali individualno naslovljivim.

1. korak: Spajkanje

Odrežite trak NeoPixels 12 LED.

Spajajte zatič GND na žico s fleksibilnega vratu, ki ima 3 črte.

Pripnite Din pin na žico, ki ima 2 liniji.

Spajajte 5V pin na žico, ki ima 1 linijo.

2. korak: Preizkusite luči

Prenesite in namestite knjižnico Adafruit_NeoPixel ter odprite kodo "strandtest".

Spremenite stalno PIN na 9.

Spremenite črto, kjer je trak definiran, tako da je konfiguriran za 12 LED.

Naložite kodo v Nano in zagotovite, da vse LED diode delujejo pravilno.

Pomanjkljive LED diode zamenjajte z delujočimi, dokler ne deluje celoten trak.

3. korak: Zazvoni

Vzemite zgornji obroč z lučke "Stick and Click" in odrežite vse vijačne nosilce na notranjem platišču.

Na robu izrežite majhno zarezo za žice iz traku.

Odlepite pokrov za lepilni trak na zadnji strani NeoPixels (če obstaja) in jih prilepite v obroč, tako da sta oba konca traku približno na zarezi, ki smo jo naredili.

Z vročim lepilom trdno pritrdite robove traku

Ko se lepilo popolnoma ohladi, ponovno preizkusite slikovne pike. S tem želimo zagotoviti, da nihče ni pretiran glede vročine in kodranja (nekaj mojih je bilo).

4. korak: Montirajte

Izrežite dva majhna pravokotnika iz 1/4 palca lesa, približno višine obroča in 1 2/3 krat širše.

Lepite jih vzporedno med seboj na obeh straneh žic iz obroča, tako da zapolnite vrzel in žice v celoti prekrijete z lepilom.

Previsoko dolžino žice previdno potisnite nazaj v fleksibilni vrat, nato pa lesene kose lepite na konec vratu z veliko lepila in previdno zapolnite vse vrzeli (brez zapolnitve vratu z lepilom).

6. korak: Dokončanje

Prstan lahko pobarvate in po želji namestite v katero koli barvo, jaz sem imel raje srebrno barvo, zato sem uporabil le Sharpie, da sem prikril logotip, ki je bil (nadležno) natisnjen na prstan. Enako velja za preostalo svetilko.

Zdaj lahko nadaljujemo s končno kodo!

8. korak: Kode in testi

Kode in testi
Kode in testi
Kode in testi
Kode in testi

Zdaj moramo le programirati svetilko in jo preizkusiti. Priložena je trenutna različica kode (rev1.0), to kodo sem preizkusil precej obsežno in deluje zelo dobro. Delam na rev2.0, kjer so gumbi konfigurirani kot zunanji prekinitve, tako da je mogoče lažje preklapljati med načini, vendar je ta različica napaka in še ni pripravljena za izdajo. Pri trenutni različici morate pritisniti gumb, dokler ne zažene zanke Debounce in ne prepozna spremembe stanja, kar je lahko moteče pri daljših zankah "Dynamic". Spodaj je koda z nekaj razlagami (enaka so v različici za prenos).

#include #ifdef _AVR_ #include #endif

#define PIN 9

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

// Parameter 1 = število slikovnih pik v traku

// Parameter 2 = številka zatiča Arduino (večina je veljavnih) // Parameter 3 = oznake pikslov, po potrebi seštejemo: // NEO_KHZ800 800 KHz bitni tok (večina izdelkov NeoPixel z LED -diodami WS2812) // NEO_KHZ400 400 KHz (klasično ' v1 '(ne v2) slikovnih pik FLORA, gonilniki WS2811) // NEO_GRB Piksli so ožičeni za bitni tok GRB (večina izdelkov NeoPixel) // NEO_RGB Piksli so povezani za RGB bitni tok (v1 FLORA slikovne pike, ne v2) // NEO_RGBW Piksli so ožičeni za RGBW bitni tok (izdelki NeoPixel RGBW) Adafruit_NeoPixel halo = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800);

// In zdaj, varnostno sporočilo naših prijateljev v Adafruit:

// POMEMBNO: Če želite zmanjšati tveganje izgorevanja NeoPixel, dodajte 1000 uF kondenzatorja

// napajalne kable pikslov, dodajte 300 - 500 ohmski upor na vnos podatkov prve piksle // in zmanjšajte razdaljo med Arduinom in prvim piksom. Izogibajte se priključitvi // na tokokrog pod napetostjo … če morate, najprej priključite GND.

// Spremenljivke

int buttonState1; int buttonState2; // trenutni odčitek iz vhodnega zatiča int lastButtonState1 = LOW; // prejšnje odčitavanje z vhodnega zatiča int lastButtonState2 = LOW; int način; // način naših luči je lahko ena od 16 nastavitev (od 0 do 15) int brightVal = 0; // svetlost/ hitrost, nastavljena s potenciometrom

// naslednje spremenljivke so dolge, ker je čas, merjen v milisekundah, // bo hitro postalo večje število, kot ga je mogoče shraniti v int. long lastDebounceTime = 0; // zadnjič, ko je bil izhodni pin preklopljen long debounceDelay = 50; // čas razglasitve; povečati, če izhod utripa

void debounce () {

// preberemo stanje stikala v lokalno spremenljivko: int reading1 = digitalRead (BUTTON1); int branje2 = digitalno branje (BUTTON2); // Če se je kateri od gumbov spremenil zaradi hrupa ali pritiska: if (branje1! = LastButtonState1 || branje2! = LastButtonState2) {// ponastavitev časovnika za odstranjevanje lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// če se je stanje gumba zaradi pritiska/sprostitve zagotovo spremenilo: if (branje1! = buttonState1) {buttonState1 = branje1; // nastavimo kot branje, če je spremenjeno, če (buttonState1 == LOW) {// so nastavljeni kot aktivni način nizkih stikal ++; if (način == 16) {način = 0; }}} if (branje2! = buttonState2) {buttonState2 = branje2; if (buttonState2 == LOW) {način = način - 1; if (način == -1) {način = 15; }}}} // za naslednjič shranimo branje skozi zanko lastButtonState1 = branje1; lastButtonState2 = branje2; }

void getBright () {// naša koda za branje potenciometra, poda vrednost med 0 in 255. Uporablja se za nastavitev svetlosti v nekaterih načinih in hitrosti v drugih.

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

// Tu so naši barvni načini. Nekateri od teh so izpeljani iz najtežjega primera, drugi so izvirni.

// Pike napolnimo eno za drugo z barvo (colorwipe, izhaja iz strandtest)

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

// mavrične funkcije (izhajajo tudi iz strandtest)

void rainbow (uint8_t wait) {

uint16_t i, j;

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

// Nekoliko drugače, zaradi česar je mavrica enakomerno razporejena po vsem

void rainbowCycle (uint8_t čakanje) {uint16_t i, j;

za (j = 0; j <256*5; j ++) {// 5 ciklov vseh barv na kolesu za (i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, Wheel (((i * 256 / halo.numPixels ()) + j) & 255)); } halo.show (); zamuda (čakanje); }}

// Vnesite vrednost od 0 do 255, da dobite barvno vrednost.

// Barve so prehod r - g - b - nazaj v r. uint32_t kolo (bajt WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return halo. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; vrni halo. Color (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; vrni halo. Color (WheelPos * 3, 255 - WheelPos * 3, 0); }

void setup () {

// To je za Trinket 5V 16MHz, te tri vrstice lahko odstranite, če ne uporabljate Trinket #if definirano (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Konec drobnarij posebna koda pinMode (POT, INPUT); pinMode (BUTTON1, INPUT_PULLUP); pinMode (BUTTON2, INPUT_PULLUP); pinMode (PIN, IZHOD); Serial.begin (9600); // razhroščevanje stvari halo.begin (); halo.show (); // Inicializirajte vse slikovne pike na 'off'}

void loop () {

debounce ();

//Serial.println(mode); // več odpravljanja napak //Serial.println(lastButtonState1); //Serial.println(lastButtonState2);

če (način == 0) {

getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, brightVal)); // nastavimo vse slikovne pike na belo} halo.show (); }; if (način == 1) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, 0)); // vse piksle nastavim na rdečo} halo.show (); }; if (način == 2) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, 0)); // vse slikovne pike nastavim na zeleno} halo.show (); }; if (način == 3) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, 0, brightVal)); // nastavimo vse slikovne pike na modro} halo.show (); }; if (način == 4) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, brightVal)); // vse slikovne pike nastavimo na cyan} halo.show (); }; if (način == 5) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, brightVal)); // vse slikovne pike nastavimo na vijolično/magenta} halo.show (); }; if (način == 6) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, 0)); // vse piksle nastavim na oranžno/rumeno} halo.show (); }; if (mode == 7) {// zdaj dinamični načini getBright (); colorWipe (halo. Color (brightVal, 0, 0), 50); // Rdeča }; if (način == 8) {getBright (); colorWipe (halo. Color (0, brightVal, 0), 50); // Zelena }; if (način == 9) {getBright (); colorWipe (halo. Color (0, 0, brightVal), 50); // modra}; if (način == 10) {getBright (); colorWipe (halo. Color (brightVal, brightVal, brightVal), 50); // bela}; if (način == 11) {getBright (); colorWipe (halo. Color (brightVal, brightVal, 0), 50); // oranžno/rumeno}; if (način == 12) {getBright (); colorWipe (halo. Color (0, brightVal, brightVal), 50); // cijan}; if (način == 13) {getBright (); colorWipe (halo. Color (brightVal, 0, brightVal), 50); // vijolična/magenta}; if (mode == 14) {// zadnji dve sta nadzor hitrosti, ker je svetlost dinamična getBright (); mavrica (brightVal); }; if (način == 15) {getBright (); rainbowCycle (brightVal); }; zamuda (10); // pustite procesorju malo počitka}

9. korak: Veliki finale

Veliki finale
Veliki finale

In zdaj imamo fantastično, super svetlo svetilko!

Tu ga lahko še dodatno spremenite ali pustite, kot je. Kodo lahko spremenite ali celo v celoti napišete novo. Podlogo lahko povečate in dodate baterije. Lahko bi dodali ventilator. Dodate lahko več NeoPixels. Seznam vsega, kar lahko storite s tem, je skoraj neskončen. Pravim "skoraj", ker sem prepričan, da še vedno nimamo tehnologije za pretvorbo tega v mini portalni generator (na žalost), toda poleg takih stvari je edina omejitev vaša domišljija (in do neke mere, kot sem nedavno ugotovil, orodja v vaši delavnici). Če pa nimate orodij, naj vas to ne ustavi, če res želite nekaj narediti, vedno obstaja pot.

To je del bistva tega projekta, da dokažem sebi (in v manjši meri tudi svetu), da lahko naredim koristne stvari, ki bi bile všeč tudi drugim ljudem, čeprav je vse, kar imam, pravi smetišč starega in odpadnega. komponente in zaboj Arduino zalog.

Odšel bom od tukaj, ker se mi zdi, da se je tale kar dobro izkazal. Če imate predlog za izboljšavo ali vprašanje o mojih metodah, pustite komentar spodaj. Če ste to naredili, fotografirajte, vsi si jo želimo ogledati!

Ne pozabite glasovati, če vam je to všeč!

Kot vedno so to projekti nevarno eksplozivnega, njegovega vseživljenjskega poslanstva, "Pogumno zgraditi tisto, kar želiš zgraditi, in še več!"

Ostale moje projekte najdete tukaj.

Hvala za branje in srečno ustvarjanje!

Priporočena: