Sadržaj:

HALO: Praktična Arduino lampa Rev1.0 W/NeoPikseli: 9 koraka (sa slikama)
HALO: Praktična Arduino lampa Rev1.0 W/NeoPikseli: 9 koraka (sa slikama)

Video: HALO: Praktična Arduino lampa Rev1.0 W/NeoPikseli: 9 koraka (sa slikama)

Video: HALO: Praktična Arduino lampa Rev1.0 W/NeoPikseli: 9 koraka (sa slikama)
Video: Praktična nastava - Arduino III 2024, Lipanj
Anonim
Image
Image
HALO: Praktična Arduino lampa Rev1,0 W/neopikseli
HALO: Praktična Arduino lampa Rev1,0 W/neopikseli
HALO: Praktična Arduino lampa Rev1,0 W/neopikseli
HALO: Praktična Arduino lampa Rev1,0 W/neopikseli

U ovom uputstvu pokazat ću vam kako izgraditi HALO ili Handy Arduino Lamp Rev1.0.

HALO je jednostavna svjetiljka 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 jednostavno osvjetljavanje svakog detalja na bilo kojoj površini. HALO ima dva gumba za kretanje kroz različite načine osvjetljenja, od kojih je 15 unaprijed programirano. Zbog upotrebe Arduino Nano kao procesora, postoji mogućnost da ga reprogramirate s dodatnim značajkama. 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 svjetiljkom, pogodnom za uporabu u bilo kojoj radionici. Jednostavnu uporabu dodatno povećava ugrađeni regulator snage Nano, pa se HALO može napajati putem USB -a ili standardne utičnice 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 natjecanju za mikrokontrolere ako vam se ovo sviđa ili vam je na neki način korisno, jako 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 neki od mojih projekata. Zahvaljujući vama momci, moja Cardboard instrukcija je postigla veliki uspjeh, a ja sam sada, otkucavši ovo do 100 sljedbenika, velika prekretnica po mom mišljenju. Zaista cijenim svu podršku koju od vas dobivam kad postavljam svoj Ible's, a kad se to već svodi, bez vas ne bih bio tu 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 smiju se zanemariti. Ovo ne ja vičem ili namjerno nisam grub, jednostavno pokušavam novom tehnikom pisanja kako bih bolje naglasio ono što 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 svoj stari stil.

Korak 1: Prikupljanje materijala

Prikupljanje materijala
Prikupljanje materijala
Prikupljanje materijala
Prikupljanje materijala
Prikupljanje materijala
Prikupljanje materijala
Prikupljanje materijala
Prikupljanje materijala

Koliko puta moram to reći? Uvijek imajte ono što vam je potrebno i zajamčeno ćete uspjeti izgraditi nešto do kraja.

Napomena: Neke od ovih su partnerske veze (s oznakom "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 pakiranja 10k potenciometara - al

1x utičnica za bačvu od 5 mm (moja se reciklira iz prženog Arduino Uno) Ženska cijevna utičnica (5 pakiranja) - al

2x 2-pinski trenutni gumbi 10 pakiranja SPST Prekidač s tipkama-al

12x neopiksela od 60 LED/metar (radi bilo koji ekvivalent, npr. WS2812B) Adafruit NeoPixels

Aluminijski lim debljine 0,5 mm

Fleksibilni vrat iz 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 "na 2,5" na 0,25"

Električna žica s jezgrom

Alati:

Pištolj za vruće ljepilo i ljepilo

Lemilica i lemljenje

Bežična električna bušilica i razni mali uvijači

X-acto nož (ili pomoćni nož)

Skidači žica

Kliješta

Rezači/šnale za žicu

Škare za teške uvjete rada

Ako nemate ravnu metalnu težinu, također vam je potrebno:

1 rola jeftinog lemljenja (ne stvari koje ćete koristiti za lemljenje) Jeftino lemilo bez olova

Alkoholna svijeća (ili Bunsenov plamenik)

Mala kaljena 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 pisač, možda vam neće biti potrebni svi ovdje navedeni alati.

Korak 2: Odrađivanje težine

Izrada težine
Izrada težine
Izrada težine
Izrada težine
Izrada težine
Izrada 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 inča, preporučio bih da to umjesto toga koristite (a magnet bi vam čak omogućio bočno postavljanje svjetiljke na metalne površine!).

Odricanje od odgovornosti: Ne snosim odgovornost za vaše ozljede, stoga vas molim 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 postupak jer bi kamera bila dodatna smetnja koja mi nije trebala niti željela.

Prvo napravite mali kalup od aluminijske folije ili mokre gline, unutarnjih dimenzija oko 2 3/4 inča po 1 3/4 inča po 1/4 inča. 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 pladanj 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 (kad je upaljen). Prije paljenja plamenika provjerite imate li pri ruci najmanje 1 par kliješta ili kleš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, zatvorene cipele i zaštitu za oči

Namotajte i odvojite hrpu jeftinog lema iz kalema te ga stavite u čeličnu posudu, a zatim upalite plamenik. Pričekajte da se zavojnica potpuno otopi, a zatim počnite umjerenim tempom ulijevati ostatak lema u posudu. 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 sasvim 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 ulijte u kalup. Čut će se sikćući zvuk i para dok se dio vode isparava, a ostatak se istiskuje iz kalupa kako bi se zamijenio istopljenim lemom.

Pustite lemnik da se ohladi, isključite plamenik/ugasite svijeću i stavite čeličnu posudu na sigurno mjesto za hlađenje. Možda ćete hladni lem polijevati hladnom vodom kako biste ubrzali hlađenje i dodatno ga stvrdnuli. (Hladna voda čini da se vanjski dio hladi brže od unutarnjeg, stvarajući unutarnju napetost koja metal čini tvrđim i čvršćim, slično kao kap Princa Ruperta.) Također možete preliti vodom metalnu posudu, ali to će dovesti do njenog lomljenja, osobito ako se radi više puta.

Nakon što se lem potpuno ohladio (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 kako bih ga ispolirao i ostavio sa strane za kasnije.

Korak 3: Izgradnja kućišta za elektroniku, Korak 1

Izgradnja kućišta za elektroniku, 1. korak
Izgradnja kućišta za elektroniku, 1. korak
Izgradnja kućišta za elektroniku, 1. korak
Izgradnja kućišta za elektroniku, 1. korak
Izgradnja kućišta za elektroniku, 1. korak
Izgradnja kućišta za elektroniku, 1. korak
Izgradnja kućišta za elektroniku, 1. korak
Izgradnja kućišta za elektroniku, 1. korak

Ovo su dijelovi ljuske koji će smjestiti Nano, montirati sučelje i u osnovi je ono što drži HALO svjetiljku na okupu. Ja sam svoj napravio sa svojim 0,5 mm aluminijskim i vrućim ljepilom, ali ako imate 3D pisač (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 preuzimanje datoteka. Budući da sam nemam pisač, nisam uspio isprobati ispis modela da vidim da li se sve ispisuje ispravno, 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 proizašle iz težine metala koju sam si izlio 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 na temelju rezultata moje izvorne metode.

Ako sastavljate od lima poput mene, evo što trebate učiniti:

Korak 1: Lice za lice

Izrežite dva identična oblika polukružnog oblika visine oko 1,5 "i širine 3". (Svoju sam uzeo iz ruke, pa izgledaju pomalo kao prednja strana juke kutije).

U jednoj od dvije ploče izbušite tri rupe za gumbe i potenciometar. Moji su bili promjera 1/4 inča. Oni mogu biti u bilo kojem rasporedu, ali više volim da moj potenciometar bude blago podignut u sredini, a gumbi s obje strane 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 tako da stane oko zavoja jedne od prednjih ploča i označite odgovarajuću duljinu ruba.

Izrežite traku ove duljine i širine oko 2 inča te ju oblikujte 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 je fleksibilni vrat imao promjer tek nešto više od 1/4 inča, pa sam upotrijebio nastavak od 1/4 inča (najveći uvijač koji imam ispod 3/4 inča) i samo pažljivo nagnuo i uvio bušiti kako bi 'izbušio' rupu dok vrat ne stane.

Sada kada imamo dijelove za ljusku, sljedeći korak je dodati elektroniku i sastaviti je!

Korak 4: Izgradnja kućišta za elektroniku, Korak 2

Izgradnja kućišta za elektroniku, korak 2
Izgradnja kućišta za elektroniku, korak 2
Izgradnja kućišta za elektroniku, korak 2
Izgradnja kućišta za elektroniku, korak 2
Izgradnja kućišta za elektroniku, korak 2
Izgradnja kućišta za elektroniku, korak 2
Izgradnja kućišta za elektroniku, korak 2
Izgradnja kućišta za elektroniku, korak 2

Sada dodajemo gumbe i potenciometar i sve sjedinjujemo.

Korak 1: Gumbi i vijci

Odvrnite šesterokutne matice s gumba i potenciometra. Ispod matice trebao bi 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, dobro je zalijepiti ga s puno ljepila s obje strane raširenih po velikom području kako se ljepilo ne bi kasnije odlijepilo.

Korak 3: Sklop ljuske (ne odnosi se na 3D tiskanu ljusku)

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 korištenju puno ljepila s obje strane spoja, baš poput vrata. Što je veće područje prekriveno ljepilom, bolje će se zalijepiti.

Sada kada imamo ljusku, možemo prijeći na dodavanje svih bitova sklopova.

Korak 5: Dodavanje elektronike

Dodavanje elektronike
Dodavanje elektronike
Dodavanje elektronike
Dodavanje elektronike
Dodavanje elektronike
Dodavanje elektronike

A ovdje je zabavni dio: Lemljenje! Posljednjih tjedana iskreno sam se pomalo umorio od lemljenja, jer u posljednje vrijeme to toliko radim kako bih pokušao završiti još jedan projekt koji bih uskoro trebao staviti (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 puno 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, samo će vam stati na put.

Na gornjim slikama postoji dijagram, možete ga slijediti ako želite.

Korak 1: Sučelje

Sa svakog od prekidača lemite žicu s jednog pina na bočni pin potenciometra. Lemite žicu s ove iste bočne iglice na uzemljenje na Nano.

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. Sharpiem 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 podstupka.

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 s 3.

Lemite žicu s 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 s 3 linije zajedno s ž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: Rezanje rupa (samo na metalnoj verziji, ako ste 3D ispisali naslovnicu, trebali biste biti u redu)

Bušilicom i X-actom ili pomoćnim nožem pažljivo napravite rupu sa strane poklopca za USB priključak Nano.

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: Montaža komponenti

Provucite tri dugačke žice kroz fleksibilni vrat i van s druge strane.

Koristeći puno vrućeg ljepila, postavite utičnicu cijevi na mjesto s iglama okrenutim prema vrhu poklopca.

Ponovno koristeći puno 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: Ponderirana baza

Ponderirana baza
Ponderirana baza
Ponderirana baza
Ponderirana baza
Ponderirana baza
Ponderirana baza

Uvjeren 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 njega na kraju kad znate da sve funkcionira.

Ako ste napravili 3D tiskanu verziju, možete preskočiti prvi korak i prijeći na drugi.

Korak 1: Drvo

Od lima šperploče od 1/4 inča izrežite podlogu veličine oko 3 inča po 2 inča.

Brusite rubove kako biste ih izgladili i uklonili bore.

Korak 2: Težina

Prvo provjerite težinu koju odaberete, bilo da magnet, metal ili prilagođeno lemljenje stane unutar rubova metalnog poklopca koji smo izradili. 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 baze.

Vruće zalijepite svoju težinu u središte komada šperploče, ili u slučaju 3D ispisanog 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 tiskanog dizajna, umetnite ga u unaprijed izrađene utore.)

Pazite da težina ne ometa elektroniku

Vrućim ljepilom učvrstite bazu na mjestu. Koristite dovoljno da osigurate čvrstu vezu.

Sada kada smo u potpunosti izradili kontrolnu kutiju, prijeđimo na svjetla.

Korak 7: NeoPixel Halo prsten

NeoPixel Halo prsten
NeoPixel Halo prsten
NeoPixel Halo prsten
NeoPixel Halo prsten
NeoPixel Halo prsten
NeoPixel Halo prsten
NeoPixel Halo prsten
NeoPixel Halo prsten

Inspiracija za naziv ove svjetiljke, ovaj dio je NeoPixel oreol prsten koji ćemo koristiti kao svoj izvor osvjetljenja. Ovaj se komad može po želji preinačiti ili zamijeniti bilo kojim NeoPixel ili individualno adresiranim LED prstenom.

Korak 1: Lemljenje

Izrežite traku NeoPixela 12 LED dioda.

Lemite GND pin na žicu sa fleksibilnog vrata koji ima 3 linije.

Lemiti 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 u 9.

Promijenite liniju na kojoj je traka definirana tako da bude konfigurirana za 12 LED dioda.

Prenesite 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 unutarnjem rubu.

Izrežite mali zarez na rubu za žice s trake.

Odlijepite poklopac ljepljive trake na stražnjoj strani NeoPixela (ako ga ima) i zalijepite ga unutar prstena, s oba kraja trake točno na zarez koji smo napravili.

Vrućim ljepilom čvrsto učvrstite rubove trake

Nakon što se ljepilo potpuno ohladi, ponovno testirajte piksele. Ovo je kako bi bili sigurni da nitko nije fin u vezi vrućine i uvijanja (nekoliko mojih je bilo).

Korak 4: Montirajte

Izrežite dva mala pravokutnika od drveta veličine 1/4 inča, približno visine prstena i širine 1 2/3 puta.

Zalijepite ih paralelno jedna s drugom 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 puno ljepila i pažljivo popunjavajući sve praznine (bez popunjavanja vrata ljepilom).

Korak 6: Završetak

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 vrijedi i za ostatak svjetiljke.

Sada možemo nastaviti dovršiti konačni kod!

Korak 8: Kodovi i testovi

Kodovi i testovi
Kodovi i testovi
Kodovi i testovi
Kodovi i testovi

Dakle, sve što trebamo učiniti je programirati lampu i testirati je. U privitku je trenutna inačica koda (rev1.0), dosta sam je 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 ima greške i još nije spremna za objavljivanje. S trenutnom verzijom morate držati gumb dok ne pokrene petlju Debounce i ne prepozna promjenu stanja, što može biti neugodno na duljim "dinamičkim" petljama. Ispod je kôd s nekim objašnjenjima (ista su objašnjenja u verziji za preuzimanje).

#include #ifdef _AVR_ #include #endif

#definirajte 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 valjanih) // Parametar 3 = zastavice tipa piksela, zbrajajte se prema potrebi: // NEO_KHZ800 800 KHz bitstream (većina NeoPixel proizvoda sa LED diodama WS2812) // 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 proizvoda NeoPixel) // 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 bitstream (NeoPixel RGBW proizvodi) Adafruit_NeoPixel halo = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800);

// A sada, sigurnosna poruka naših prijatelja u Adafruit -u:

// VAŽNO: Da biste smanjili rizik od izgaranja NeoPixela, dodajte 1000 uF kondenzatora

// napojni vodiči piksela, dodajte otpornik od 300 - 500 Ohma na unos podataka prvog piksela // i smanjite udaljenost između Arduina i prvog piksela. Izbjegavajte spajanje // na strujni krug … ako morate, prvo spojite GND.

// Varijable

int buttonState1; int buttonState2; // trenutno očitanje s ulaznog pina int lastButtonState1 = LOW; // prethodno očitavanje s ulaznog pina int lastButtonState2 = LOW; int način; // način rada naših svjetala, može biti jedno od 16 postavki (0 do 15) int brightVal = 0; // svjetlinu/ brzinu, 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 kad je izlazni pin prebacivan long debounceDelay = 50; // vrijeme debounce; povećati ako izlaz treperi

void debounce () {

// očitavanje stanja sklopke u lokalnu varijablu: int reading1 = digitalRead (BUTTON1); int čitanje2 = digitalno čitanje (BUTTON2); // Ako se bilo koji gumb promijenio, zbog buke ili pritiska: if (čitanje1! = LastButtonState1 || čitanje2! = LastButtonState2) {// resetiranje mjerača debouncing lastDebounceTime = millis (); } if ((millis () - lastDebounceTime)> debounceDelay) {// ako se stanje gumba 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 (način == 16) {način = 0; }}} if (čitanje2! = buttonState2) {buttonState2 = čitanje2; if (buttonState2 == LOW) {način = način rada - 1; if (način == -1) {način = 15; }}}} // spremiti oč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, a brzine u drugima.

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

// Ovdje su naši načini boja. Neki od njih izvedeni su iz najtežeg primjera, drugi su izvorni.

// Ispunite točkice 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

// Pomalo drugačije, zbog toga je duga podjednako raspoređena

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

za (j = 0; j <256*5; j ++) {// 5 ciklusa svih boja na kotaču za (i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, Wheel ((((i * 256 / halo.numPixels ()) + j) & 255)); } halo.show (); odgoda (čekanje); }}

// Unesite vrijednost od 0 do 255 da biste dobili vrijednost boje.

// Boje su prijelaz r - g - b - natrag u r. uint32_t Kotač (byte WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {return halo. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; vratiti halo. Color (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; povratna aureola. Boja (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, IZLAZ); Serial.begin (9600); // ispravljanje pogrešaka halo.begin (); halo.show (); // Inicijaliziraj sve piksele na "isključeno"}

void loop () {{100} {101}

debounce ();

//Serial.println(mode); // više otklanjanja pogreš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 (način == 1) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, 0)); // sve piksele postavi na crveno} halo.show (); }; if (način == 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 (način == 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 (način == 4) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (0, brightVal, brightVal)); // sve piksele postaviti na cijan} halo.show (); }; if (način == 5) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, 0, brightVal)); // sve piksele postaviti na ljubičastu/magenta} halo.show (); }; if (način == 6) {getBright (); for (int i = 0; i <halo.numPixels (); i ++) {halo.setPixelColor (i, halo. Color (brightVal, brightVal, 0)); // postavlja sve piksele u narančasto/žuto} halo.show (); }; if (mode == 7) {// sada dinamički načini getBright (); colorWipe (halo. Boja (brightVal, 0, 0), 50); // Crvena }; if (način == 8) {getBright (); colorWipe (halo. Boja (0, brightVal, 0), 50); // Zeleno}; if (način == 9) {getBright (); colorWipe (halo. Boja (0, 0, brightVal), 50); // Plava}; if (način == 10) {getBright (); colorWipe (halo. Color (brightVal, brightVal, brightVal), 50); // bijelo}; if (način == 11) {getBright (); colorWipe (halo. Color (brightVal, brightVal, 0), 50); // narančasta/žuta}; 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); // ljubičasta/magenta}; if (mode == 14) {// posljednja dva su kontrola brzine, jer je svjetlina dinamička getBright (); duga (brightVal); }; if (način == 15) {getBright (); rainbowCycle (brightVal); }; kašnjenje (10); // dopustite procesoru malo odmora}

Korak 9: Veliko finale

Veliko finale
Veliko finale

A sada imamo fantastičnu, super-svijetlu malu svjetiljku!

Ovdje ga možete dalje izmijeniti ili ostaviti kako jest. 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 više NeoPixela. Popis svega što biste mogli učiniti s ovim gotovo je beskonačan. Kažem "gotovo" jer sam prilično siguran da još uvijek nemamo tehnologiju za pretvoriti ovo u mini portal generator (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 smisla 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 spremnik zaliha Arduina.

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, fotografirajte, svi to želimo vidjeti!

Molimo da ne zaboravite glasovati ako vam se ovo sviđa!

Kao i uvijek, ovo su projekti tvrtke Dangerously Explosive, njegove cjeloživotne misije, "Hrabro izgraditi ono što želite izgraditi, i više!"

Ostatak mojih projekata možete pronaći ovdje.

Hvala na čitanju i sretno!

Preporučeni: