Sadržaj:
- Korak 1: Prikupljanje materijala
- Korak 2: Određivanje težine
- Korak 3: Izgradnja kućišta za elektroniku, Korak 1
- Korak 4: Izgradnja kućišta za elektroniku, Korak 2
- Korak 5: Dodavanje elektronike
- Korak 6: Ponderisana baza
- Korak 7: NeoPixel Halo prsten
- Korak 8: Kodovi i testovi
- Korak 9: Veliko finale
Video: HALO: Praktična Arduino lampa Rev1.0 W/NeoPikseli: 9 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
U ovom uputstvu pokazat ću vam kako izgraditi HALO ili Handy Arduino Lamp Rev1.0.
HALO je jednostavna lampa, koju pokreće Arduino Nano. Ima ukupnu površinu otprilike 2 "x 3" i ponderiranu drvenu podlogu za izuzetnu stabilnost. Fleksibilan vrat i 12 super svijetlih NeoPixela omogućuju mu da lako osvijetli svaki detalj na bilo kojoj površini. HALO ima dva tastera za kretanje kroz različite režime osvetljenja, od kojih je 15 unapred programiranih. Zbog upotrebe Arduino Nano -a kao procesora, postoji mogućnost da ga reprogramirate dodatnim mogućnostima. Jednostruki potenciometar koristi se za podešavanje svjetline i/ili brzine kojom se prikazuje način rada. Jednostavna metalna konstrukcija čini HALO vrlo izdržljivom lampom, pogodnom za upotrebu u bilo kojoj radionici. Jednostavnost korištenja pojačava i ugrađeni regulator snage Nano, pa se HALO može napajati putem USB -a ili standardnog priključka od 5 mm na stražnjoj strani.
Nadam se da ću u bliskoj budućnosti vidjeti mnogo ljudi koji koriste ove svjetiljke, jer postoji toliko mogućnosti koje se otvaraju ovim dizajnom. Ostavite glas na takmičenju za mikrokontrolere ako vam se ovo sviđa ili vam je na neki način korisno, zaista bih vam zahvalan.
Prije nego što pređemo na ovaj Instructable, želio bih kratko reći hvala svim svojim sljedbenicima i svima koji su ikada komentirali, favoritizirali ili glasali za bilo koji od mojih projekata. Zahvaljujući vama momci, moja Cardboard instrukcija je postigla veliki uspjeh, i ja sam sada, otkucavši ovo do 100 pratilaca, velika prekretnica po mom mišljenju. Zaista cijenim svu podršku koju dobijam od vas kada postavljam svoj Ible's, a kada se to svodi, bez vas ne bih bio ovdje gdje sam danas. S tim u vezi, hvala vam svima!
NAPOMENA: U cijelom ovom uputstvu izrazi su podebljani. Ovo su važni dijelovi svakog koraka i ne treba ih zanemariti. Ovo ne ja vičem ili namjerno nisam grub, već jednostavno pokušavam novom tehnikom pisanja kako bih bolje naglasio šta treba učiniti. Ako vam se ne sviđa i više volite kako sam ranije pisao svoje korake, javite mi u komentarima, pa ću se vratiti na stari stil.
Korak 1: Prikupljanje materijala
Koliko puta moram to reći? Uvijek imajte ono što vam je potrebno i garantirano ćete uspjeti izgraditi nešto do kraja.
Napomena: Neke od ovih su partnerske veze (označene sa "al"), dobit ću mali povratni udarac ako kupujete putem njih, bez dodatnih troškova. Hvala vam ako kupujete putem linkova
Dijelovi:
1x Arduino Nano Nano - al
1x 10k rotacijski potenciometar 5 kom 10k potenciometra - al
1x utičnica za cijev od 5 mm (moja se reciklira iz prženog Arduino Uno) Ženska cijevna utičnica (5 kom) - al
2x 2-pinski trenutni tasteri 10 pakovanja SPST prekidač-al
12x NeoPixela sa 60 LED/metar (radi bilo koji ekvivalent, npr. WS2812B) Adafruit NeoPixels
Aluminijumski lim debljine 0,5 mm
Fleksibilni vrat od starog upaljača
Gornji pokrovni prsten od "Stick and Click" LED svjetla za ormare LED Cabinet Light - al
Mali list šperploče od 1/4 inča
Teška, ravna metalna težina dimenzija (otprilike) 1,5 "sa 2,5" na 0,25"
Električna žica sa jezgrom
Alati:
Pištolj za vruće ljepilo i ljepilo
Lemilica i lemljenje
Akumulatorska bušilica za napajanje i razni mali uvijači
X-acto nož (ili pomoćni nož)
Strojevi za skidanje žice
Kliješta
Rezači žica/šnale
Škare za teške uslove rada
Ako nemate ravnu metalnu težinu, potrebno vam je i:
1 rola jeftinog lemljenja (ne stvari koje ćete koristiti za lemljenje) Jeftino lemilo bez olova
Alkoholna svijeća (ili Bunsenov plamenik)
Mala posuda od kaljenog čelika koju ne možete uništiti (ili mali lončić ako ga imate)
Stativ za spomenutu posudu/lončić (ja sam svoj napravio od čelične žice promjera 12)
Jelo od glinenih biljaka (jedna od onih stvari koja ide ispod lonca)
Malo aluminijske folije
NAPOMENA: Ako imate komplet za zavarivanje ili 3D štampač, možda vam neće biti potrebni svi ovdje navedeni alati.
Korak 2: Određivanje težine
Ovo je prilično težak korak i morate biti krajnje oprezni. Ako imate težinu teškog metala ili ravni neodimijski magnet otprilike 2,75 x 1,75 x 0,25, preporučio bih da to umjesto toga koristite (a magnet bi vam čak omogućio da postavite lampu bočno na metalne površine!).
Odricanje od odgovornosti: Ne snosim odgovornost za bilo kakve ozljede s vaše strane, stoga vas molimo da koristite zdrav razum
Također, učinite to vani preko betonske površine koja vam neće smetati ako se malo opeče (ovo je samo mjera opreza). Nemam slike za ovaj proces jer bi kamera bila dodatna smetnja koja mi nije trebala niti željela.
Prvo napravite mali kalup od aluminijske folije ili mokre gline, oko 2 3/4 inča po 1 3/4 inča po 1/4 inča u unutrašnjim dimenzijama. Može biti jajastog oblika poput mog ili pravokutnika. Koristite više slojeva folije ili debele slojeve gline.
Kalup stavite u keramičku posudu za biljke, a kalup i poslužavnik napunite hladnom vodom.
Uzmite neosvijetljenu alkoholnu svijeću/bunzen plamenik i stavite čeličnu posudu/lončić na stativ tako da će plamen zagrijati sredinu posude (kada je upaljen). Prije paljenja plamenika provjerite imate li pri ruci najmanje 1 par kliješta ili kliješta za obradu metala, ako ne 2.
Bilo bi dobro da tijekom sljedećih nekoliko koraka nosite kožne rukavice, duge rukave, duge hlače, cipele sa zatvorenim prstima i zaštitu za oči
Namotajte i odvojite hrpu jeftinog lema iz kalema i stavite ga u čeličnu posudu, a zatim upalite gorionik. Sačekajte da se zavojnica potpuno otopi, a zatim počnite umetati ostatak lema u posudu umjerenim tempom. Ako u lemljenju ima kolofonija, to može spontano izgorjeti na vrućini, stvarajući blijedožuti plamen i crni dim. Ne brinite, ovo mi se dogodilo više puta i potpuno je normalno.
Nastavite umetati lem u posudu dok se posljednji ne otopi.
Neka plamen iz sagorijevanja kolofonija potpuno ugasne, a kliještima/kliještima uhvatite posudu i nježno zavrtite rastopljeni metal unutra, pažljivo ga držeći u plamenu.
Nakon što ste sigurni da je sav lem potpuno ukapljen i na dobroj vrućoj temperaturi, brzo i pažljivo ga uklonite s plamena i sipajte u kalup. Čut će se snažno šištanje i para dok se dio vode isparava, a ostatak se istiskuje iz kalupa kako bi se zamijenio istopljenim lemom.
Pustite da se lem ohladi, isključite gorionik/ugasite svijeću i stavite čeličnu posudu na sigurno mjesto za hlađenje. Možda ćete htjeti hladnu vodu preliti rashladnim lemom kako biste ubrzali hlađenje i dodatno ga stvrdnuli. (Hladna voda čini da se spoljašnjost hladi brže od unutrašnjosti, stvarajući unutrašnju napetost koja čini metal tvrđim i čvršćim, slično kao kap Princa Ruperta.) Takođe možete preliti vodu preko metalne posude, ali to će dovesti do njenog lomljenja, pogotovo ako se radi više puta.
Nakon što se lem potpuno ohladi (oko 20 minuta da biste bili sigurni), izvadite ga iz kalupa za foliju.
Moj je s jedne strane postao deblji od druge, pa sam čekićem izravnao i poravnao rubove (rezultirajući oblikom koji vidite na slikama). Zatim sam ga lagano izbrusio pod mlazom vode da ga ispoliram i ostavio sa strane za kasnije.
Korak 3: Izgradnja kućišta za elektroniku, Korak 1
Ovo su dijelovi ljuske koji će smjestiti Nano, montirati sučelje i u osnovi su oni koji drže HALO lampu na okupu. Ja sam svoj napravio sa svojim aluminijumom od 0,5 mm i vrućim ljepilom, ali ako imate 3D štampač (nešto što već neko vrijeme pokušavam nabaviti za svoju trgovinu), napravio sam. STL verziju u Tinkercadu koju sam ovdje priložio za vas skinuti. Budući da i sam nemam pisač, nisam mogao isprobati ispis modela da vidim da li se sve ispisuje kako treba, ali mislim da bi trebalo biti u redu ako dodate odgovarajuće strukture podrške u rezalicu. Ovdje također možete kopirati i urediti izvornu datoteku ako trebate ili želite malo drugačiji dizajn ili estetiku.
Dimenzije su zapravo izvedene iz težine metala koju sam sipao iz lemljenja, a ne iz veličine elektronike, ali svejedno je ispalo sasvim dobro i dimenzije su prilično optimalne.
Slike prikazuju nešto drugačiji redoslijed rada od onog što ću ovdje napisati, to je zato što sam osmislio poboljšanu metodu zasnovanu na rezultatima moje izvorne metode.
Ako sastavljate od lima poput mene, evo što trebate učiniti:
Korak 1: Prednje ploče
Izrežite dva identična oblika polukružnog oblika visine oko 1,5 "i širine 3". (Ja sam svoj uzeo iz ruke, pa pomalo liče na prednji dio juke kutije).
U jednoj od dvije ploče izbušite tri rupe za dugmad i potenciometar. Moje su imale svaki promjer 1/4 inča. Mogu biti u bilo kojem rasporedu, ali više volim da moj potenciometar bude blago podignut u sredini, s tipkama s obje strane koje tvore jednakokračni trokut. Prilikom bušenja uvijek napravim malu probnu rupu prije nego što pređem na bit potrebne veličine, pomaže u centriranju rupa i čini ih malo čistijima.
Korak 2: Lučni poklopac
Sagnite se nad komadom aluminija kako biste uklopili krivulju jedne od prednjih ploča i označite odgovarajuću duljinu ruba.
Izrežite traku ove dužine i širine oko 2 inča i oblikujte je u luk koji odgovara obliku zavoja prednjih ploča s obje strane.
Pronađite središnju točku na vrhu krivulje i izbušite rupu koja odgovara fleksibilnom vratu upaljača. Pomaknuo sam rupu prema stražnjoj strani rudnika jer će moja svjetiljka tijekom upotrebe uglavnom imati nagnut vrat prema naprijed, pa sam tome htio dodati malo protuteže. Moj fleksibilni vrat imao je samo nešto više od 1/4 inča u promjeru, pa sam upotrijebio bit od 1/4 inča (najveći uvijač koji posjedujem, a koji ima manje od 3/4 inča) i samo pažljivo nagnuo i uvio izbušite da biste „izbušili“rupu dok vrat ne prilegne.
Sada kada imamo dijelove za ljusku, sljedeći korak je dodavanje elektronike i njeno sastavljanje!
Korak 4: Izgradnja kućišta za elektroniku, Korak 2
Sada dodajemo gumbe i potenciometar i sve to sjedinjujemo.
Korak 1: Dugmad i vijci
Odvrnite šesterokutne matice s dugmadi i potenciometra. Ispod matice bi trebao biti uređaj za hvatanje, ostavite ovo mjesto.
Provucite svaku komponentu kroz odgovarajuću rupu, a zatim navrnite matice da biste pričvrstili svaku na svom mjestu. Pritegnite matice do točke u kojoj ste sigurni da je svaka komponenta potpuno sigurna.
Korak 2. Savitljivi vrat
Provucite fleksibilni vrat kroz rupu na vrhu zakrivljenog komada. Vruće ljepilo ili zavarite (ako imate opremu) vrat čvrsto na mjestu.
Ako koristite vruće ljepilo kao što sam ja, dobra je ideja zalijepiti ga s puno ljepila s obje strane raširenih na velikom području kako se ljepilo ne bi kasnije odlijepilo.
Korak 3: Sklop ljuske (ne odnosi se na 3D štampane ljuske)
Pomoću šipke za zavarivanje ili vrućeg ljepila pričvrstite prednju i stražnju prednju ploču na odgovarajuća mjesta na lučnom poklopcu. Trebalo mi je nekoliko pokušaja da mi se ljepilo zalijepi, a kao i prije, trik je u tome da koristim puno ljepila s obje strane zgloba, baš kao i vrat. Što je veće područje prekriveno ljepilom, bolje će se zalijepiti.
Sada kada imamo ljusku, možemo prijeći na dodavanje svih bitova kola.
Korak 5: Dodavanje elektronike
A evo i zabavnog dijela: Lemljenje! Posljednjih sedmica iskreno sam se pomalo umorio od lemljenja, jer sam to radio toliko u posljednje vrijeme kako bih pokušao završiti još jedan projekt koji bih uskoro trebao započeti (pripazite na radikaliziranu novu verziju svog robotskog zaslona platforme), što je rezultiralo time da sam uništio jedno željezo, a dobio drugo … U svakom slučaju, ovdje nema mnogo lemljenja, pa bi ovo trebalo biti prilično jednostavno.
Napomena: Ako vaš Nano već ima pin zaglavlja, preporučio bih da ih odlemite za ovaj projekt, oni će vam samo stati na put.
Na gornjim slikama postoji dijagram, možete ga slijediti ako želite.
Korak 1: Interfejs
Sa svakog prekidača lemite žicu s jednog pina na bočni pin potenciometra. Lemite žicu sa ove iste bočne iglice na iglu za uzemljenje na Nano -u.
Lemite žicu od središnjeg pina potenciometra do A0 na Nano.
Lemite žicu s nepovezanog pina bilo kojeg prekidača na A1 na Nano -u.
Lemite žicu s nepovezanog pina na drugom prekidaču na A2 na Nano -u.
Napomena: Nije važno koji je prekidač koji, možete ih vrlo lako promijeniti u kodu, osim činjenice da jedan prekidač jednostavno radi suprotno od drugog.
Odrežite žicu duljine 4 inča dulje od fleksibilnog vrata i ogolite obje strane. Pomoću Sharpiea označite jednu stranu jednom linijom.
Lemite žicu na posljednji nepovezani bočni pin potenciometra, uvijte nepovezani kraj ove žice zajedno s neoznačenim krajem žice iz posljednjeg koraka.
Lemiti ovaj spojeni kraj na 5V na Nano.
Korak 2: Zaslon i žice za napajanje
Odrežite 2 duljine žice 4 inča dulje od fleksibilnog vrata i skinite oba kraja.
Sharpiem označite krajeve svake žice, jednu žicu s 2 linije, a jednu sa 3.
Lemiti žicu sa 2 linije na digitalni pin 9 na Nano -u.
Na svom 5 mm priključku za cijev lemite žicu od središnjeg zatiča (pozitivnog) do Vina na Nano -u.
Lemite drugu žicu na bočni zatik (uzemljenje/negativno) utičnice cijevi.
Okrenite dugu žicu sa 3 linije zajedno sa žicom sa bočnog zatiča cijevne utičnice.
Lemite ove žice na otvoreni GND pin na Nano -u.
Po potrebi izolirajte spojeve električnom trakom ili vrućim ljepilom.
Korak 3: Rupe za rezanje (samo na metalnoj verziji, ako ste 3D odštampali omot, trebali biste biti u redu)
Bušilicom i X-actom ili pomoćnim nožem pažljivo napravite rupu na bočnoj strani poklopca za USB priključak Nano-a.
Napravite još jednu rupu otprilike veličine prednje strane utičnice cijevi na stražnjoj strani poklopca, po mogućnosti bliže strani nasuprot rupe za USB priključak.
Korak 4: Montiranje komponenti
Provucite tri dugačke žice kroz fleksibilni vrat i van s druge strane.
Koristeći dosta vrućeg ljepila, montirajte utičnicu cijevi na mjesto s iglama okrenutim prema vrhu poklopca.
Opet pomoću dosta vrućeg ljepila, postavite Nano na mjesto, s gumbom za resetiranje prema dolje i USB priključkom u utoru. Napravio sam "most s vrućim ljepilom" između utičnice cijevi i Nanoa, zbog čega jedno drugo čvrsto drži na mjestu.
Sada možemo prijeći na izradu ponderirane baze!
Korak 6: Ponderisana baza
Siguran sam u svoje sposobnosti lemljenja i ovo sam dobro isplanirao, pa sam nastavio i dodao bazu prije testiranja koda. Ako niste sigurni u svoje vještine, predlažem da preskočite ovaj korak i vratite se na kraju kad znate da sve funkcionira.
Ako ste napravili 3D štampanu verziju, možete preskočiti prvi korak i preći na drugi.
Korak 1: Drvo
Od lima šperploče od 1/4 inča izrežite podlogu veličine 3 inča sa 2 inča.
Brusite rubove kako biste ih izgladili i uklonili bore.
Korak 2: Težina
Prvo osigurajte svoju težinu po izboru, bilo da magnet, metal ili prilagođeno lemljenje stane unutar rubova metalnog poklopca koji smo napravili. Moj je bio malo velik u jednom smjeru, pa sam se malo obrijao sa strane nožem X-acto. Ako vaš nije način na koji to možete učiniti, možda ćete se morati petljati s drugačijim dizajnom osnove.
Vruće zalijepite svoju težinu u središte komada šperploče, ili u slučaju 3D štampanog dizajna, u središnji dio "ladice" koji sam dizajnirao za tu svrhu.
Korak 3: Baza
Postavite metalni poklopac na težinu i centrirajte ga na drvenu podlogu. (U slučaju 3D štampanog dizajna, umetnite ga u već izrađene utore.)
Uvjerite se da težina ne ometa nijednu elektroniku
Vrućim ljepilom učvrstite bazu na mjestu. Koristite dovoljno da osigurate čvrstu vezu.
Sada kada smo našu kontrolnu kutiju u potpunosti napravili, idemo na svjetla.
Korak 7: NeoPixel Halo prsten
Inspiracija za naziv ove lampe, ovaj dio je NeoPixel oreol prsten koji ćemo koristiti kao izvor osvjetljenja. Ovaj se komad može po želji preinačiti ili zamijeniti bilo kojim NeoPixel -om ili individualno adresiranim LED prstenom.
Korak 1: Lemljenje
Izrežite traku NeoPixela dužine 12 LED dioda.
Lemite GND pin na žicu sa fleksibilnog vrata koji ima 3 linije.
Lemite Din iglu na žicu koja ima 2 linije.
Lemite 5V pin na žicu koja ima 1 liniju.
Korak 2: Testirajte svjetla
Preuzmite i instalirajte biblioteku Adafruit_NeoPixel i otvorite "strandtest" kod.
Promijenite stalni PIN na 9.
Promijenite liniju gdje je traka definirana tako da bude konfigurirana za 12 LED dioda.
Otpremite kôd u Nano i pobrinite se da sve vaše LED diode rade ispravno.
Zamijenite sve neispravne LED diode radnim, dok cijela traka ne proradi.
Korak 3: Pozovite
Uzmite gornji prsten sa svjetla "Stick and Click" i odrežite sve vijke na unutrašnjem obodu.
Izrežite mali zarez na rubu za žice s trake.
Odlijepite poklopac ljepljive trake sa stražnje strane NeoPixela (ako ga ima) i zalijepite ga u prsten, s oba kraja trake otprilike na zarezu koji smo napravili.
Vrućim ljepilom čvrsto učvrstite rubove trake
Nakon što se ljepilo potpuno ohladi, ponovo testirajte piksele. Ovo je kako bi bili sigurni da niko nije prevrtljiv u vezi vrućine i uvijanja (nekoliko mojih je bilo).
Korak 4: Montirajte
Izrežite dva mala pravokutnika od drveta 1/4 inča, približno visine prstena i širine 1 2/3 puta.
Zalijepite ih paralelno jedno s drugim na obje strane žica od prstena, popunjavajući prazninu i potpuno prekrivajući žice ljepilom.
Pažljivo gurnite svu višak duljine žice natrag u fleksibilni vrat, a zatim zalijepite drvene komade na kraj vrata, koristeći dosta ljepila i pažljivo popunjavajući sve praznine (bez popunjavanja vrata ljepilom).
Korak 6: Završavanje
Možete obojiti prsten i montirati bilo koju boju ako želite, ja sam preferirao srebrnu završnu obradu pa sam koristio samo Sharpie da prikrijem logotip koji je (dosadno) otisnut na prsten. Isto važi i za ostatak lampe.
Sada možemo nastaviti dovršiti konačni kod!
Korak 8: Kodovi i testovi
Dakle, sve što trebamo učiniti je programirati lampu i testirati je. U prilogu je trenutna verzija koda (rev1.0), ovaj sam kôd prilično opsežno testirao i radi vrlo dobro. Radim na rev2.0 gdje su gumbi konfigurirani kao vanjski prekidi tako da se načini mogu lakše prebacivati između njih, ali ova verzija je greška i još nije spremna za objavljivanje. Kod trenutne verzije morate držati gumb dok ne pokrene petlju Debounce i ne prepozna promjenu stanja, što može biti neugodno na dužim "dinamičkim" petljama. Ispod je kôd s nekim objašnjenjima (ista su objašnjenja u verziji za preuzimanje).
#include #ifdef _AVR_ #include #endif
#define PIN 9
#define POT A0 #define BUTTON1 A1 #define BUTTON2 A2
// Parametar 1 = broj piksela u traci
// Parametar 2 = Arduino pin broj (većina je ispravnih) // Parametar 3 = zastavice tipa piksela, zbrajajte se prema potrebi: // NEO_KHZ800 800 KHz bitstream (većina NeoPixel proizvoda sa WS2812 LED diodama) // NEO_KHZ400 400 KHz (klasično ' v1 '(ne v2) FLORA pikseli, upravljački programi WS2811) // NEO_GRB Pikseli su ožičeni za GRB bitstream (većina NeoPixel proizvoda) // NEO_RGB Pikseli su ožičeni za RGB bitstream (v1 FLORA pikseli, a ne v2) // NEO_RGBW Pikseli su ožičeni za RGBW tok bitova (NeoPixel RGBW proizvodi) Adafruit_NeoPixel halo = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800);
// A sada, sigurnosna poruka naših prijatelja na Adafruit -u:
// VAŽNO: Da biste smanjili rizik od izgaranja NeoPixela, dodajte 1000 uF kondenzatora
// kabeli za napajanje piksela, dodajte otpornik 300 - 500 Ohm na ulaz podataka prvog piksela // i smanjite udaljenost između Arduina i prvog piksela. Izbjegavajte spajanje // na strujno kolo … ako morate, prvo spojite GND.
// Varijable
int buttonState1; int buttonState2; // trenutno očitavanje sa ulaznog pina int lastButtonState1 = LOW; // prethodno očitavanje sa ulaznog pina int lastButtonState2 = LOW; int mode; // način rada naših svjetala, može biti jedno od 16 postavki (0 do 15) int brightVal = 0; // svjetlina/ brzina, kako je postavljeno potenciometrom
// sljedeće varijable su dugačke jer je vrijeme, mjereno u milisekundama, // brzo će postati veći broj nego što se može pohraniti u int. long lastDebounceTime = 0; // zadnji put kada je izlazni pin prebacivan long debounceDelay = 50; // vrijeme debounce; povećati ako izlaz treperi
void debounce () {
// čita stanje prekidača u lokalnu varijablu: int reading1 = digitalRead (BUTTON1); int čitanje2 = digitalno čitanje (BUTTON2); // Ako se neko dugme promijenilo, zbog šuma ili pritiska: if (čitanje1! = LastButtonState1 || čitanje2! = LastButtonState2) {// resetiranje tajmera za odbacivanje lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// ako se stanje dugmeta definitivno promijenilo zbog pritiska/otpuštanja: if (čitanje1! = buttonState1) {buttonState1 = čitanje1; // postavljamo kao očitanje ako se promijeni if (buttonState1 == LOW) {// oni su postavljeni kao aktivni niski prekidači način rada ++; if (mode == 16) {mode = 0; }}} if (čitanje2! = buttonState2) {buttonState2 = čitanje2; if (buttonState2 == LOW) {mode = mode - 1; if (mode == -1) {mode = 15; }}}} // spremi čitanje za sljedeći put kroz petlju lastButtonState1 = čitanje1; lastButtonState2 = čitanje2; }
void getBright () {// naš kôd za očitavanje potenciometra, daje vrijednost između 0 i 255. Koristi se za postavljanje svjetline u nekim načinima i brzine u drugima.
int potVal = analogRead (POT); brightVal = mapa (potVal, 0, 1023, 0, 255); }
// Ovdje su naši načini boja. Neki od njih izvedeni su iz najtačnijeg primjera, drugi su originalni.
// Popunite tačke jednu za drugom bojom (colorwipe, izvedeno iz strandtest)
void colorWipe (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i
// dugine funkcije (također izvedene iz strandtest)
void rainbow (uint8_t wait) {
uint16_t i, j;
za (j = 0; j <256; j ++) {za (i = 0; i
// Malo drugačije, ovo čini dugu podjednako raspoređenom po cijeloj dužini
void rainbowCycle (uint8_t čekanje) {uint16_t i, j;
za (j = 0; j <256*5; j ++) {// 5 ciklusa svih boja na točku za (i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, Wheel (((i * 256 / halo.numPixels ()) + j) & 255)); } halo.show (); kašnjenje (čekanje); }}
// Unesite vrijednost od 0 do 255 da biste dobili vrijednost boje.
// Boje su prijelaz r - g - b - natrag u r. uint32_t Točak (bajt WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return halo. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; return halo. Color (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; return halo. Color (WheelPos * 3, 255 - WheelPos * 3, 0); }
void setup () {
// Ovo je za Trinket 5V 16MHz, možete ukloniti ove tri linije ako ne koristite Trinket #if definirano (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // Kraj drangulije poseban kod pinMode (POT, INPUT); pinMode (BUTTON1, INPUT_PULLUP); pinMode (BUTTON2, INPUT_PULLUP); pinMode (PIN, OUTPUT); Serial.begin (9600); // otklanjanje grešaka halo.begin (); halo.show (); // Inicijalizacija svih piksela na 'isključeno'}
void loop () {{100} {101}
debounce ();
//Serial.println(mode); // više otklanjanja grešaka //Serial.println(lastButtonState1); //Serial.println(lastButtonState2);
if (način == 0) {
getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, brightVal)); // postavljanje svih piksela na bijelo} halo.show (); }; if (mode == 1) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, 0)); // sve piksele postaviti na crveno} halo.show (); }; if (mode == 2) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, 0)); // sve piksele postaviti na zeleno} halo.show (); }; if (mode == 3) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, 0, brightVal)); // sve piksele postaviti u plavo} halo.show (); }; if (mode == 4) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, brightVal)); // sve piksele postaviti na cyan} halo.show (); }; if (mode == 5) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, brightVal)); // postavlja sve piksele na ljubičastu/magenta} halo.show (); }; if (mode == 6) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, 0)); // postavlja sve piksele na narančasto/žuto} halo.show (); }; if (mode == 7) {// sada dinamički načini getBright (); colorWipe (halo. Color (brightVal, 0, 0), 50); // Red}; if (mode == 8) {getBright (); colorWipe (halo. Color (0, brightVal, 0), 50); // zelena}; if (mode == 9) {getBright (); colorWipe (halo. Color (0, 0, brightVal), 50); // Plava}; if (mode == 10) {getBright (); colorWipe (halo. Color (brightVal, brightVal, brightVal), 50); // bijelo}; if (mode == 11) {getBright (); colorWipe (halo. Color (brightVal, brightVal, 0), 50); // narančasta/žuta}; if (mode == 12) {getBright (); colorWipe (halo. Color (0, brightVal, brightVal), 50); // cijan}; if (mode == 13) {getBright (); colorWipe (halo. Color (brightVal, 0, brightVal), 50); // ljubičasta/magenta}; if (mode == 14) {// posljednja dva su kontrola brzine, jer je svjetlina dinamička getBright (); duga (brightVal); }; if (mode == 15) {getBright (); rainbowCycle (brightVal); }; kašnjenje (10); // ostavite procesoru malo odmora}
Korak 9: Veliko finale
A sada imamo fantastičnu, super-sjajnu malu lampu!
Odavde ga možete dalje izmijeniti ili ostaviti kako jeste. Možete promijeniti kôd ili čak potpuno napisati novi. Možete povećati bazu i dodati baterije. Možete dodati obožavatelja. Možete dodati još NeoPixela. Lista svega što biste mogli učiniti s ovim je gotovo beskonačna. Kažem "skoro" jer sam prilično siguran da još uvijek nemamo tehnologiju da ovo pretvorimo u mini generator portala (nažalost), ali osim takvih stvari, jedino ograničenje je vaša mašta (i donekle, kao što sam nedavno otkrio, alati u vašoj radionici). Ali ako nemate alate, neka vas to ne zaustavi, ako zaista želite nešto učiniti, uvijek postoji način.
To je dio poante ovog projekta, da dokažem sebi (i u manjoj mjeri svijetu) da mogu napraviti korisne stvari koje bi se svidjele i drugim ljudima, čak i ako sve što imam je prava hrpa starih i otpadnih otpadaka. komponente i kantu Arduino zaliha.
Prekinut ću ovdje, jer mislim da je ovaj ispao prilično dobro. Ako imate prijedlog za poboljšanje ili pitanje o mojim metodama, ostavite komentar ispod. Ako ste ovo napravili, slikajte, svi želimo to vidjeti!
Molimo da ne zaboravite glasati ako vam se ovo sviđa!
Kao i uvijek, ovo su projekti kompanije Dangerously Explosive, njegove doživotne misije, "Hrabro izgraditi ono što želite izgraditi, i više!"
Ostatak mojih projekata možete pronaći ovdje.
Hvala na čitanju i sretno stvaranje!
Preporučuje se:
Neopikseli kontrolirani pametnim telefonom (LED traka) s aplikacijom Blynk preko WiFi -a: 6 koraka
Neopikseli kontrolirani pametnim telefonom (LED traka) s aplikacijom Blynk preko WiFi-ja: Ovaj projekt sam stvorio nakon što sam bio inspiriran neopikselima kontroliranim putem pametnog telefona u kući prijatelja, ali su njegovi kupljeni u trgovini. Pomislio sam "koliko može biti teško napraviti svoju, bilo bi i mnogo jeftinije!" Ovako. Napomena: Pretpostavljam da ste vi
Jednostavna, praktična Arduino štoperica: 4 koraka
Jednostavna, praktična Arduino štoperica: Pretražite na Internetu Arduino štopericu. Vjerovatno ste to upravo učinili, ako ste ovdje. Iz vlastitog iskustva mogu vam reći da je svaka štoperica na internetu ili previše složena (u kodu, za početnike), ili je previše pojednostavljena i nije praktična
Praktična Dandy svjetiljka: 3 koraka (sa slikama)
Handy Dandy Flashlight: Jeste li jedan od onih hobista za elektroniku koji uvijek imaju punu torbu ili dvije "dobrote"? Napravio sam ovu svjetiljku od rezervnih dijelova u svojoj sobi. Zašto? Jer bila je nedjelja popodne. To je razlog zašto je ukupno vrijeme projekta bilo ispod sat vremena
Praktična elektronika: 3 koraka
Praktična elektronika: Imamo indikator korištenja telefona sa trepćućom crvenom LED diodom. Alkalna baterija od 9 volti u indikatoru traje samo mjesec ili dva. Htio sam ga zamijeniti NiCad punjivom baterijom. Ali, nisam htio razmišljati o ponovnom punjenju
Praktična traka za mobitel: 7 koraka
Praktičan remen za mobitel: Želite remen za mobitel koji će vaš telefon učiniti korisnijim? Ovaj remen nije samo neuništiv i siguran za vaš telefon, već je i dovoljno dug da vam visi iz džepova radi lakšeg pristupa, a na kraju ima magnet dovoljno snažan da