Sisukord:
- Samm: materjalide kogumine
- 2. samm: Kaalu tõstmine
- 3. samm: elektroonika korpuse ehitamine, 1. samm
- 4. samm: elektroonika korpuse ehitamine, 2. samm
- Samm: elektroonika lisamine
- 6. samm: kaalutud alus
- Samm 7: NeoPixel Halo Ring
- 8. samm: koodid ja testid
- 9. samm: suur finaal
Video: HALO: käepärane Arduino lamp Rev 1.0 W/Neo Pikslid: 9 sammu (koos piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Selles juhendis näitan teile, kuidas ehitada HALO või Handy Arduino Lamp Rev1.0.
HALO on lihtne lamp, mille toiteallikaks on Arduino Nano. Selle kogujalajälg on umbes 2 x 3 tolli ja kaalutud puidust alus äärmise stabiilsuse tagamiseks. Paindlik kael ja 12 üliheledat NeoPixelit võimaldavad sellel hõlpsasti valgustada iga detaili mis tahes pinnal. HALO-l on kaks vajutusnuppu, et liikuda erinevates valgusrežiimides, millest 15 on eelprogrammeeritud. Tänu Arduino Nano kasutamisele protsessorina on teil võimalus see täiendavate funktsioonidega ümber programmeerida. Üksikut potentsiomeetrit kasutatakse režiimi kuvamise heleduse ja/või kiiruse reguleerimiseks. Lihtne metallkonstruktsioon muudab HALO väga vastupidavaks lambiks, mis sobib kasutamiseks igas töökojas. Kasutuslihtsust lisab Nano sisseehitatud toiteregulaator, nii et HALO saab toite kas USB kaudu või tavalise 5 mm tünnipistiku tagaküljel.
Loodan, et näen lähitulevikus paljusid inimesi neid lampe kasutamas, sest selle disainiga avaneb nii palju võimalusi. Palun jätke hääletus mikrokontrollerite konkursile, kui teile see meeldib või see mingil moel kasulik on, oleksin väga tänulik.
Enne selle juhendiga tutvumist tahaksin lühidalt tänada kõiki oma jälgijaid ja kõiki, kes on kunagi mõnda minu projekti kommenteerinud, lemmikutesse lisanud või hääletanud. Tänu teile, mu juhendist Cardboard sai tohutu edu ja nüüd olen selle kirjutamise ajal jõudnud peaaegu 100 jälgijani, mis on minu arvates suur verstapost. Ma hindan tõesti kogu tuge, mida ma teilt saan, kui ma oma Ible'i üles panen, ja kui asi puudutab, siis poleks ma ilma sinuta seal, kus ma täna olen. Sellega öeldes aitäh kõigile!
MÄRKUS. Selles juhendis on paksus kirjas fraasid. Need on iga sammu olulised osad ja neid ei tohiks ignoreerida. See ei ole minu karjumine ega tahtlik ebaviisakas, vaid proovin lihtsalt uut kirjutamistehnikat, et paremini rõhutada, mida tuleb teha. Kui teile see ei meeldi ja eelistate seda, kuidas ma varem oma samme kirjutama kippusin, andke sellest kommentaarides teada ja ma lähen tagasi oma vana stiili juurde.
Samm: materjalide kogumine
Mitu korda pean seda ütlema? Alati on see, mida vajate, ja olete kindel, et saate midagi lõpuni ehitada.
Märkus. Mõned neist on sidusettevõtte lingid (tähistatud tähega „al”). Kui ostate nende kaudu, teenin teile väikese tagasilöögi ilma lisakuludeta. Tänan teid, kui ostate linkide kaudu
Osad:
1x Arduino Nano Nano - al
1x 10k pöörlev potentsiomeeter 5 pakki 10k potentsiomeetrit - al
1x 5 mm tünni pistik (minu oma on ringlussevõetud praetud Arduino Unost) emane tünnipistik (5 pakki) - al
2x 2-kontaktilist hetkelist surunuppu 10 pakki SPST nupplülitit-al
12x NeoPixels 60 LED/meeter kiust (mis tahes samaväärne, nt WS2812B, töötab) Adafruit NeoPixels
Leht 0,5 mm alumiiniumist
Paindlik kael vanast paindlikust tulemasinast
Ülemine kaane rõngas "Stick and Click" LED -kapi valgusti LED -kapi valgus - al
Väike leht 1/4 tolli vineerist
Raske, lame metall, mille mõõtmed on (umbes) 1,5 "kuni 2,5" x 0,25"
Keermestatud südamikuga elektrijuhe
Tööriistad:
Kuum liimipüstol ja liim
Jootekolb ja jootekolb
Akutrell ja mitmesugused väikesed keerdtangid
X-acto nuga (või kasulik nuga)
Traadi eemaldajad
Tangid
Traadi lõikurid/klambrid
Raskeveokid
Kui teil pole tasast metallist kaalu, vajate ka järgmist:
1 rull odavat jootet (mitte seda, mida jootmiseks kasutate) Odav pliivaba joodis
Alkoholiküünal (või Bunsen -põleti)
Väike karastatud terasnõu, mida te ei pahanda rikkuma (või väike tiigel, kui teil see on)
Nimetatud tassi/tiigli statiiv (tegin oma 12 -meetrise terastraadist)
Savist taimne roog (üks neist asjadest, mis potti alla läheb)
Mingi alumiiniumfoolium
MÄRKUS. Kui teil on keevituskomplekt või 3D -printer, ei pruugi teil kõiki siin loetletud tööriistu vaja minna.
2. samm: Kaalu tõstmine
See on üsna raske samm ja seda tehes peate olema äärmiselt ettevaatlik. Kui teil on raske metalli kaal või lame neodüümmagnet umbes 2,75 x 1,75 x 0,25 tolli, soovitaksin seda kasutada (ja magnet võimaldaks lampi isegi metallpindadele külgsuunas asetada!).
Vastutusest loobumine: ma ei vastuta teie vigastuste eest, seega kasutage palun tervet mõistust
Tehke seda ka väljaspool betoonpinda, mis ei pane pahaks, kui see pisut kõrbema läheb (see on vaid ettevaatusabinõu). Mul pole selle protsessi jaoks pilte, sest kaamera oleks olnud täiendav segaja, mida ma ei vajanud ega tahtnud.
Esiteks tehke väike vorm alumiiniumfooliumist või märjast savist, sisemõõtmetes umbes 2 3/4 tolli 1 3/4 tolli 1/4 tolli. See võib olla munakujuline, nagu minu oma, või ristkülik. Kasutage mitu kihti fooliumi või paksu savikihti.
Asetage vorm keraamilisse taimeanumasse ja täitke nii vorm kui ka alus külma veega.
Võtke oma valgustamata alkoholiküünal/kuklipõleti ja asetage terasnõu/tiigel statiivile, nii et leek kuumutaks nõude keskosa (kui see põleb). Enne põleti süütamist veenduge, et käepärast oleks vähemalt 1 paar tangid või metallitöötlemistangid, kui mitte 2.
Järgmiste sammude tegemisel on hea kanda nahkkindaid, pikki varrukaid, pikki pükse, kinniseid kingi ja silmade kaitset
Keerake kokku ja katkestage pooli hunnik odavat jootet ja asetage see terasnõusse, seejärel süüdake põleti. Oodake, kuni mähis täielikult sulab, seejärel alustage ülejäänud joote joomist mõõduka kiirusega nõusse. Kui joodises on kampol, võib see kuumuses iseeneslikult põlema minna, tekitades kahvatukollase leegi ja musta suitsu. Ärge muretsege, seda on minuga mitu korda juhtunud ja see on täiesti normaalne.
Jätkake joote joomist nõusse, kuni viimane on sulanud.
Laske põleva kampolil tekkinud leegil täielikult välja suruda ja kasutage tangide/tangide abil nõu kinni ja keerutage sulanud metalli õrnalt sees, hoides seda ettevaatlikult leegis.
Kui olete kindel, et kõik joodised on täielikult veeldatud ja heal temperatuuril, eemaldage see kiiresti ja ettevaatlikult leegist ning valage vormi. Kuulub vali susisev heli ja aur, kuna osa veest aurustub ja ülejäänu sunnitakse vormist välja, et asendada see sula joodisega.
Laske joodisel jahtuda, lülitage põleti välja/puhke küünal välja ja asetage terasnõu kuhugi jahtuma. Jahutamise kiirendamiseks ja selle edasiseks kõvastamiseks võiksite jahutusjoodise peale valada külma vett. (Külm vesi paneb väliskülje jahtuma kiiremini kui seestpoolt, tekitades sisemise pinge, mis muudab metalli kõvemaks ja jäigemaks, sarnaselt prints Ruperti tilgaga.) Võite ka oma metallnõu veega üle lasta, kuid see muutub rabedaks, eriti kui seda tehakse mitu korda.
Kui joodis on täielikult jahtunud (umbes 20 minutit, et see oleks ohutu), eemaldage see fooliumvormist.
Minu oma lõppes ühelt poolt paksemalt kui teine, nii et haamriga ühtlustasin ja servad tasandasin (tulemuseks oli pilt, mida näete piltidel). Seejärel lihvisin seda kergelt jooksva vee all poleerimiseks ja panin hilisemaks kõrvale.
3. samm: elektroonika korpuse ehitamine, 1. samm
Need on kesta osad, kus asub Nano, paigaldatakse liides ja mis põhimõtteliselt hoiab HALO lampi koos. Ma tegin oma 0,5 mm alumiiniumist ja kuuma liimiga, aga kui teil on 3D -printer (midagi, mida olen juba mõnda aega oma poodi hankinud), tegin TinkCadis. STL -versiooni, mille lisasin teile siia lae alla. Kuna mul endal pole printerit, ei saanud ma mudelit testida, et näha, kas kõik prindib õigesti, kuid arvan, et see peaks sobima, kui lisate oma viilutajasse õiged tugistruktuurid. Siin saate ka lähtefaili kopeerida ja redigeerida, kui vajate või soovite veidi teistsugust kujundust või esteetikat.
Mõõdud tuletati tegelikult metallmassist, mille ma endale jootest välja valasin, mitte elektroonika suurusest, aga see tuli igatahes üsna hästi välja ja mõõtmed on päris optimaalsed.
Piltidel on veidi erinev toimimiskord, mida ma siia kirjutan, seda seetõttu, et olen oma algse meetodi tulemuste põhjal välja töötanud täiustatud meetodi.
Kui monteerite lehtmetallist nagu mina, peate tegema järgmist.
Samm: näoplaadid
Lõika kaks identset poolringikujulist kuju umbes 1,5 tolli pikkused ja 3 tolli laiad. (Tegin oma käega vabakäega, nii et need näevad välja nagu juke boxi esikülg).
Puurige ühes kahest plaadist kolm auku nuppude ja potentsiomeetri jaoks. Minu oma oli läbimõõduga 1/4 tolli. Need võivad olla mis tahes paigutusega, kuid eelistan, et minu potentsiomeeter oleks keskelt veidi üles tõstetud, kusjuures mõlemal küljel olevad nupud moodustavad võrdkülgse kolmnurga. Puurimisel teen alati enne nõutava suurusega otsikule minekut väikese prooviaugu, see aitab auke tsentreerida ja muudab need natuke puhtamaks.
2. samm: kaarjas kate
Painutage üle alumiiniumitüki, et see sobiks ümber ühe esiplaadi kõvera, ja märkige õige servapikkus.
Lõigake välja selle pikkusega ja umbes 2 tolli laiune riba ning vormige see kaareks, mis sobib mõlemal küljel olevate esiplaatide kõvera kujuga.
Leidke kõvera ülaosast keskpunkt ja puurige tulemasina paindekaelale sobiv auk. Nihutasin auku tagaküljele, kuna minu lambil on kasutamise ajal kael enamasti ettepoole kallutatud, nii et tahtsin sellele natuke vastukaaluks lisada. Minu painduva kaela läbimõõt oli veidi üle 1/4 tolli, seega kasutasin 1/4 tolli (minu suurim keeratav ots, mis on alla 3/4 tolli) ja keerasin selle ettevaatlikult nurga alla ja väänasin puurige, et auk välja puurida, kuni kael sobib.
Nüüd, kui meil on kesta osad olemas, on järgmine samm elektroonika lisamine ja kokkupanek!
4. samm: elektroonika korpuse ehitamine, 2. samm
Nüüd lisame nupud ja potentsiomeetri ning paneme kõik kokku.
Samm: nupud ja poldid
Keerake kuuskantmutrid nuppude ja potentsiomeetri küljest lahti. Mutri all peaks olema haarderõnga seade, jätke see oma kohale.
Lükake kõik komponendid läbi vastava ava, seejärel keerake mutrid tagasi, et need kõik oma kohale kinnitada. Pingutage mutrid nii kaugele, et olete kindel, et iga komponent on täiesti turvaline.
Samm 2. Paindlik kael
Lükake painduv kael läbi kumera detaili ülaosas oleva augu. Kuum liim või keevitus (kui teil on seadmed) kael kindlalt paigas.
Kui kasutate kuuma liimi nagu mina, on hea mõte liimida see suurel alal laiali laiali liimiga mõlemale küljele, et vältida liimi hilisemat lahtitulekut.
3. samm: kesta kokkupanek (ei kehti 3D -prinditud kesta kohta)
Kas keevitusvarda või kuuma liimi abil kinnitage esi- ja tagaplaat kaarjas kaanel oma kohtadesse. Mul kulus paar katset, et mu liim kleepuks, ja nagu varemgi, on trikk kasutada liimi mõlemal küljel, nagu kaelal, palju liimi. Mida suurem on liimiga kaetud ala, seda paremini see kleepub.
Nüüd, kui meil on kest, saame jätkata kõigi vooluahelate lisamisega.
Samm: elektroonika lisamine
Ja siin on lõbus osa: jootmine! Viimastel nädalatel olen ausalt öeldes jootmisest natuke väsinud, sest olen seda viimasel ajal nii palju teinud, et proovida ja lõpetada veel üks projekt, mille peaksin peagi üles panema (jälgige oma robotkuvari radikaliseerunud uut versiooni platvormid), mille tagajärjel rikkusin ühe triikraua ja sain teise … Igatahes pole siin palju jootmist, nii et see peaks olema üsna lihtne.
Märkus. Kui teie Nano -l on juba nööpnõelad, soovitan need selle projekti jaoks jootest lahti keerata, need takistavad seda ainult.
Ülaltoodud piltidel on diagramm, võite seda järgida, kui soovite.
Samm: liides
Jootke igast lülitist traat ühest tihvtist potentsiomeetri küljetihvti külge. Jootke traat sellest samast külgpoldist Nano maandusnõela külge.
Jootke traat potentsiomeetri keskmisest tihvtist Nano A0 -le.
Jootke traat kummagi lüliti ühendamata tihvtist Nano -le A1.
Jootke traat teise lüliti ühendamata tihvtist Nano A2 -le.
Märkus. Pole tähtis, milline lüliti on, saate neid koodis väga lihtsalt muuta, peale selle, et üks lüliti teeb lihtsalt vastupidi.
Lõigake traadi pikkus 4 tolli pikemaks kui paindekael ja eemaldage mõlemad küljed. Märkige Sharpie abil üks külg ühe joonega.
Jootke traat potentsiomeetri viimase ühendamata külgnõela külge, keerake selle juhtme ühendamata ots koos juhtme märgistamata otsaga viimasest alametapist.
Jootke see ühendatud Nano 5V -ga.
Samm: kuva- ja toitejuhtmed
Lõigake 2 traadi pikkust 4 tolli pikemaks kui paindekael ja eemaldage mõlemad otsad.
Märkige Sharpie abil iga traadi otsad, üks traat kahe joonega ja teine 3 -ga.
Jootke traat 2 joonega Nano digitaalsele tihvtile 9.
Jootke oma 5 mm tünnipistikul traat kesknööpist (positiivne) Nano Vini külge.
Jootke teine traat tünnipistiku külgnõelale (maandatud/negatiivne).
Keerake pikk traat 3 joonega koos tünni pistiku külgnõela juhtmega.
Jootke need juhtmed Nano avatud GND tihvti külge.
Vajadusel eraldage ühendused elektrilindi või kuuma liimiga.
3. etapp: aukude lõikamine (ainult metallversiooni puhul, kui kaane 3D -trükkisite, peaks kõik korras olema)
Kasutades puurit ja X-acto või kasuliku nuga, tehke ettevaatlikult kaane küljele auk Nano USB-pordi jaoks.
Tehke kaane tagaküljele veel umbes tünnipistiku suurune auk, eelistatavalt lähemale USB -pordi ava vastasküljele.
4. samm: komponentide paigaldamine
Viige kolm pikka traati läbi painduva kaela ja teisest küljest välja.
Paigaldage tünni tungraud, kasutades palju kuuma liimi, nii, et tihvtid oleksid kaane ülaosaga.
Jällegi, kasutades palju kuuma liimi, paigaldage Nano oma kohale, lähtestamisnupp allapoole ja USB -pesa oma pesasse. Tegin tünni tungraua ja Nano vahele "kuuma liimisilla", mis paneb kumbki teist kindlalt paigal hoidma.
Nüüd saame kaalutud aluse valmistamiseks edasi liikuda!
6. samm: kaalutud alus
Olen oma jootmisoskustes kindel ja mul oli see hästi planeeritud, nii et läksin edasi ja lisasin enne koodi testimist aluse. Kui te pole oma oskustes vähem kindel, soovitaksin selle sammu vahele jätta ja selle juurde naasta lõpus, kui teate, et kõik töötab.
Kui tegite 3D -trükitud versiooni, võite esimese sammu vahele jätta ja teise juurde liikuda.
Samm: puit
Lõika 1/4 tolli vineerist lehest alus umbes 3 tolli 2 tolli.
Lihvige servad siledaks ja eemaldage luid.
2. samm: kaal
Esiteks veenduge oma kaalus, olgu siis see, et magnet, metall või kohandatud jootmismahuti mahub meie valmistatud metallkatte servadesse. Minu oma oli ühes suunas natuke suur, nii et raseerisin X-acto noaga küljelt natuke maha. Kui teie oma pole selline, kus saate seda teha, peate võib -olla leidma teistsuguse baaskujunduse.
Kuumliimige oma kaal vineeritüki keskele või 3D -prinditud kujunduse puhul minu selleks otstarbeks mõeldud keskmisele salve alale.
Samm: alus
Paigaldage metallkate raskuse kohale ja tsentreerige see puidust alusele. (3D-prinditud kujunduse puhul paigaldage see eelnevalt valmistatud soontesse.)
Veenduge, et kaal ei segaks elektroonikat
Aluse kinnitamiseks kasutage kuuma liimi. Kasutage piisavalt, et tagada kindel ühendus.
Nüüd, kui meil on juhtkarp täielikult valmis, liigume tulede juurde.
Samm 7: NeoPixel Halo Ring
Selle lampi nime inspiratsiooniks on see osa NeoPixeli halo -rõngas, mida kasutame oma valgusallikana. Seda konkreetset detaili saab soovi korral muuta või asendada mis tahes NeoPixeli või individuaalselt adresseeritava LED -rõngaga.
Samm: jootmine
Lõika 12 LED -riba pikkusega NeoPixels.
Jootke GND tihvt painduva kaelaga traadi külge, millel on 3 joont.
Jootke Dini tihvt juhtme külge, millel on 2 rida.
Jootke 5V tihvt juhtmega, millel on 1 rida.
2. samm: katsetage tulesid
Laadige alla ja installige raamatukogu Adafruit_NeoPixel ning avage "strandtest" kood.
Muutke pidev PIN -kood 9 -le.
Muutke rida, kus riba on määratletud, nii et see oleks konfigureeritud 12 LED -i jaoks.
Laadige kood Nano -le üles ja veenduge, et kõik teie LED -id töötaksid korralikult.
Vahetage vigane valgusdiood töötavate vastu, kuni kogu riba töötab.
3. samm: helista
Võtke ülemine rõngas "Stick and Click" tulelt ära ja lõigake ära kõik sisemise velje kruvikinnitused.
Lõika ribalt juhtmete servale väike sälk.
Eemaldage kleeplindi kate NeoPixelite tagaküljelt (kui see on olemas) ja kleepige need rõnga sisse, nii et riba mõlemad otsad oleksid umbes meie tehtud sälguga.
Riba servade kinnitamiseks kasutage kuuma liimi
Kui liim on täielikult jahtunud, katsetage piksleid uuesti. Selle eesmärk on veenduda, et keegi pole kuumuse ja lokkimise suhtes peenike (mõned minu omad olid).
4. samm: paigaldage
Lõika välja kaks väikest ristkülikut 1/4 tolli puidust, umbes rõnga kõrgus ja 1 2/3 korda laiem.
Liimige need rõngast mõlemal pool juhtmeid üksteisega paralleelselt, täites tühimiku ja kattes juhtmed täielikult liimiga.
Lükake liigne traatpikkus ettevaatlikult paindekaela tagasi ja seejärel liimige puidutükid kaela otsa, kasutades palju liimi ja täites hoolikalt kõik tühikud (ilma kaela liimita).
6. samm: viimistlemine
Soovi korral saate sõrmust värvida ja paigaldada mis tahes värvi, eelistasin hõbedast viimistlust, nii et kasutasin ainult Sharpie'i, et varjata (tüütult) rõngale trükitud logo. Sama kehtib ka ülejäänud lambi kohta.
Nüüd saame jätkata lõpliku koodi lõpetamisega!
8. samm: koodid ja testid
Nüüd on meil vaja ainult lamp programmeerida ja katsetada. Lisatud on praegune koodiversioon (rev1.0), olen seda koodi üsna põhjalikult testinud ja see töötab väga hästi. Töötan rev2.0 kallal, kus nupud on konfigureeritud välisteks katkestusteks, nii et režiime oleks lihtsam vahetada, kuid see versioon on lollakas ja pole veel vabastamiseks valmis. Praeguse versiooni puhul peate nuppu hoidma, kuni see käivitab Debounce'i ahela ja tuvastab oleku muutuse, mis võib pikematel "dünaamilistel" tsüklitel olla tüütu. Allpool on kood koos mõne selgitusega, mis on sisse kirjutatud (allalaaditav versioon sisaldab samu selgitusi).
#include #ifdef _AVR_ #include #endif
#defineeri PIN -kood 9
#define POT A0 #define BUTTON1 A1 #define BUTTON2 A2
// Parameeter 1 = pikslite arv ribas
// Parameeter 2 = Arduino pin -number (enamik neist on kehtivad) // Parameeter 3 = pikslitüübi lipud, lisage vastavalt vajadusele: // NEO_KHZ800 800 KHz bitivoog (enamik NeoPixeli tooteid koos WS2812 LED -idega) // NEO_KHZ400 400 KHz (klassikaline) v1 '(mitte v2) FLORA pikslid, WS2811 draiverid) // NEO_GRB Pikslid on ühendatud GRB bitivooga (enamik NeoPixeli tooteid) // NEO_RGB Pikslid on ühendatud RGB bitivooga (v1 FLORA pikslit, mitte v2) // NEO_RGBW Pikslid RGBW bitivoog (NeoPixel RGBW tooted) Adafruit_NeoPixel halo = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800);
// Ja nüüd meie Adafruit'i sõprade ohutusteade:
// TÄHTIS: NeoPixeli läbipõlemise riski vähendamiseks lisage 1000 uF kondensaatorit
// pikslite toitejuhtmed, lisage esimese piksli andmesisestusele 300–500 oomi takisti // ja minimeerige Arduino ja esimese piksli vaheline kaugus. Vältige // ühendamist pingestatud vooluahelal… vajadusel ühendage kõigepealt GND.
// Muutujad
int buttonState1; int buttonState2; // praegune näit sisendpoldilt int lastButtonState1 = LOW; // eelmine lugemine sisendpoldilt int lastButtonState2 = LOW; int režiim; // meie tulede režiim, võib olla üks 16 seadistusest (0 kuni 15) int brightVal = 0; // heledus/ kiirus, nagu potentsiomeeter määrab
// järgmised muutujad on pikad, kuna aeg, mõõdetuna millisekundites, // muutub kiiresti suuremaks arvuks, kui seda saab int. long lastDebounceTime = 0; // viimane kord, kui väljundnööp oli sisse lülitatud, pikk debounceDelay = 50; // tagasilöögi aeg; suureneb, kui väljund vilgub
void debounce () {
// lüliti oleku lugemine kohalikuks muutujaks: int reading1 = digitalRead (BUTTON1); int lugemine2 = digitalRead (BUTTON2); // Kui kumbki nuppudest muutus müra või vajutamise tõttu: if (reading1! = LastButtonState1 || reading2! = LastButtonState2) {// lähtestage tagasilöögitaimer lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// kui nupu olek on vajutamise/vabastamise tõttu kindlasti muutunud: if (reading1! = buttonState1) {buttonState1 = lugemine1; // määrake see lugemiseks, kui seda muudetakse, kui (buttonState1 == LOW) {// need on seatud aktiivseks madala lüliti režiimiks ++; kui (režiim == 16) {režiim = 0; }}} if (lugemine2! = nupuriik2) {nupuvahend2 = lugemine2; if (buttonState2 == LOW) {mode = mode - 1; kui (režiim == -1) {režiim = 15; }}}} // salvesta näit järgmiseks korraks läbi tsükli lastButtonState1 = lugemine1; lastButtonState2 = lugemine2; }
void getBright () {// meie potentsiomeetri lugemise kood annab väärtuse vahemikus 0 kuni 255. Mõnes režiimis kasutatakse heledust ja teistes kiirust.
int potVal = analogRead (POT); brightVal = kaart (potVal, 0, 1023, 0, 255); }
// Siin on meie värvirežiimid. Mõned neist on tuletatud keerukamast näitest, teised on originaalsed.
// Täida punktid üksteise järel värviga (värvipühkimine, tuletatud kiudtestist)
void colorWipe (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i
// vikerkaare funktsioonid (tuletatud ka kiudtestist)
tühi vikerkaar (uint8_t oota) {
uint16_t i, j;
jaoks (j = 0; j <256; j ++) {jaoks (i = 0; i
// Veidi erinev, see muudab vikerkaare kogu ulatuses võrdselt jaotatuks
void rainbowCycle (uint8_t oota) {uint16_t i, j;
(j = 0; j <256*5; j ++) {// 5 ratta kõigi värvide tsüklit (i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, ratas (((i * 256 / halo.numPikslid ()) + j) & 255)); } halo.show (); viivitus (oota); }}
// Värviväärtuse saamiseks sisestage väärtus 0 kuni 255.
// Värvid on üleminek r - g - b - tagasi r. uint32_t Ratas (bait WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return halo. Color (255 - WheelPos * 3, 0, WheelPos * 3); } kui (WheelPos <170) {WheelPos -= 85; tagasi halo. Värv (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; tagasi halo. Värv (WheelPos * 3, 255 - WheelPos * 3, 0); }
tühine seadistus () {
// See on Trinket 5V 16MHz jaoks, saate need kolm rida eemaldada, kui te ei kasuta nipsasja #if defineeritud (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Nipsasja erikoodi lõpp pinMode (POT, INPUT); pinMode (BUTTON1, INPUT_PULLUP); pinMode (BUTTON2, INPUT_PULLUP); pinMode (PIN, VÄLJUND); Seriaalne algus (9600); // silumise asjad halo.begin (); halo.näitus (); // Initsialiseeri kõik pikslid olekusse „väljas”}
void loop () {
debounce ();
//Seriaalne.println (režiim); // rohkem silumist //Serial.println(lastButtonState1); //Serial.println(lastButtonState2);
kui (režiim == 0) {
getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, brightVal)); // määrake kõik pikslid valgeks} halo.show (); }; kui (režiim == 1) {getBright (); jaoks (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, 0)); // määrake kõik pikslid punaseks} halo.show (); }; kui (režiim == 2) {getBright (); jaoks (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, 0)); // määrake kõik pikslid roheliseks} halo.show (); }; kui (režiim == 3) {getBright (); jaoks (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, 0, brightVal)); // määrake kõik pikslid siniseks} halo.show (); }; kui (režiim == 4) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, brightVal)); // määrake kõik pikslid tsüaaniks} halo.show (); }; kui (režiim == 5) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, brightVal)); // määrake kõik pikslid lillaks/magentaks} halo.show (); }; kui (režiim == 6) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, 0)); // määrake kõik pikslid oranžiks/kollaseks} halo.show (); }; if (mode == 7) {// nüüd dünaamilised režiimid getBright (); colorWipe (halo. Color (brightVal, 0, 0), 50); // Punane}; kui (režiim == 8) {getBright (); colorWipe (halo. Color (0, brightVal, 0), 50); // Roheline}; kui (režiim == 9) {getBright (); colorWipe (halo. Color (0, 0, brightVal), 50); // Sinine}; kui (režiim == 10) {getBright (); colorWipe (halo. Color (brightVal, brightVal, brightVal), 50); // valge}; kui (režiim == 11) {getBright (); colorWipe (halo. Color (brightVal, brightVal, 0), 50); // oranž/kollane}; kui (režiim == 12) {getBright (); colorWipe (halo. Color (0, brightVal, brightVal), 50); // tsüaan}; kui (režiim == 13) {getBright (); colorWipe (halo. Color (brightVal, 0, brightVal), 50); // lilla/magenta}; if (mode == 14) {// kaks viimast on kiiruse reguleerimine, sest heledus on dünaamiline getBright (); vikerkaar (brightVal); }; kui (režiim == 15) {getBright (); rainbowCycle (brightVal); }; viivitus (10); // laske protsessoril veidi puhata}
9. samm: suur finaal
Ja nüüd on meil fantastiline, ülitugev väike lamp!
Siit saate seda edasi muuta või jätta selle nii, nagu see on. Saate koodi muuta või isegi uue kirjutada. Saate alust suurendada ja patareisid lisada. Võite lisada ventilaatori. Saate lisada rohkem NeoPiksleid. Nimekiri kõigest, mida saate sellega teha, on peaaegu lõpmatu. Ma ütlen "peaaegu", sest olen üsna kindel, et meil pole ikka veel tehnikat selle miniportaaligeneraatoriks teisendamiseks (kahjuks), kuid peale selliste asjade on teie kujutlusvõime (ja mingil määral nagu ma hiljuti leidsin, teie töökoja tööriistad). Kuid kui teil pole tööriistu, ärge laske sellel end peatada, kui soovite midagi teha, on alati võimalus.
See on osa selle projekti mõttest, et tõestada endale (ja vähemal määral kogu maailmale), et suudan teha kasulikku, mis meeldiks ka teistele inimestele, isegi kui mul on ainult tõeline rämpshunnik vanu ja vanaraua komponente ja Arduino tarvikute prügikasti.
Ma jätan siinkohal ära, sest minu arvates tuli see üsna hästi välja. Kui teil on parandusettepanekuid või küsimusi minu meetodite kohta, jätke palun kommentaar allpool. Kui sa selle tegid, siis tee pilti, me kõik tahame seda näha!
Palun ärge unustage hääletada, kui see teile meeldib!
Nagu alati, on need Dangerously Explosive'i projektid, tema eluaegne missioon "Julgelt ehitada seda, mida soovite ehitada, ja palju muud!"
Ülejäänud minu projektid leiate siit.
Täname lugemise eest ja head tegemist!
Soovitan:
Elavad pikslid - kujutlege, et tehnoloogial on elu: 4 sammu (piltidega)
Elavad pikslid - kujutlege, et tehnoloogial on elu: nähes, et nutikad kodutooted on meie elus tavalisemad, olen hakanud mõtlema inimeste ja nende toodete vahelistele suhetele. Kui ühel päeval saavad nutikatest kodutoodetest igaühe elu lahutamatu osa, siis millist suhtumist me peaksime võtma
Versano: multifunktsionaalne käepärane seade (arduino Nano): 6 sammu
Versano: multifunktsionaalne käepärane seade (arduino Nano): mul oli vaja käepärast multimeetrit, mida saaks hõlpsasti kõikjale kanda. Ma tahtsin, et see oleks väike ja miniatuurne kambris tavaliste multimeetritega. Tundide pikkuse kodeerimise ja vooluahela projekteerimisega tegin lõpuks seadme, mis suudab mõõta volt
Nano -pikslid 26 -bitine Arduino kasutamine: 4 sammu
26 -bitised Nano -pikslid Arduino abil: oma eelmises artiklis tegin õpetuse WS2812 Nano Pixel LED -i kasutamise kohta. Selles artiklis kasutasin 16 -bitist rõngast Nano Pixel WS2812. Ja selles artiklis näitan teile, kuidas kasutada 26 -bitist rõngast Nano Pixels WS2812. Riistvara osas
Käepärane Altoidide komplekt: 5 sammu
Käepärane Altoidide komplekt: see on suurepärane juhendatav ja lõbus komplekt vanusele 8-80
Käepärane taskulamp: 3 sammu (piltidega)
Käepärane Dandy taskulamp: kas olete üks neist elektroonikaharrastajatest, kellel on alati kott või kaks täis "head"? Ma ehitasin selle taskulambi oma toa varuosadest. Miks? Sest oli pühapäeva pärastlõuna. Sellepärast oli projekti koguaeg tunduvalt alla tunni