Sadržaj:
- Korak 1: Kontroler
- Korak 2: Omotajte drvo
- Korak 3: Ne zaboravite zvijezdu na vrhu
- Korak 4: Isprobajte
Video: LED spiralno stablo: 4 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:33
Volim sve vrste LED traka. S njima sam napravio lijepo svjetlo duge. Korisne su čak i one koje se ne mogu adresirati. Napravio sam sjajno vanjsko svjetlo na tržištu, tako što sam ih pričvrstio na rebra unbrella, pa kad je moje spiralno stablo izletjelo, odlučio sam omotati duljinu LED trake oko njega.
Korak 1: Kontroler
Odlučio sam koristiti RGB LED diode koje se ne mogu adresirati. To znači da mogu imati programirani učinak, ali sve LED diode mijenjaju boju istovremeno. To također znači da će biti potreban kontroler. Mogao sam koristiti arduino uno i napraviti prve testove pomoću RGB štita, ali na kraju sam koristio prilagođenu pojedinačnu ploču s golim čipom Atmega328. Trebalo je samo promijeniti ciljnog programera i izravno programirati čip.
Ostalo mi je dosta ovih ploča od drugih projekata svjetiljki. Umjesto toga, slobodno upotrijebite jeftini ugrađeni unaprijed programirani kontroler kao što sam ja to učinio na svom kišobranu.
Na kraju sam upotrijebio polagani crossfade demo kao bazu za stablo.
/** Kôd za 3 LED-a, crveno, zeleno i plavo (RGB) s unakrsnim blijeđenjem * Da biste stvorili blijeđenje, morate učiniti dvije stvari: * 1. Opišite boje koje želite prikazati * 2. Navedite redoslijed koji želite da bi izblijedjele * * OPIS BOJE: * Boja je samo niz od tri posto, 0-100, * kontrolira crvenu, zelenu i plavu LED diodu * * Crvena je crvena LED punim svjetlom, plava i zelena isključena * int crvena = {100, 0, 0} * Zagasito bijela su sve tri LED diode pri 30% * int dimWhite = {30, 30, 30} * itd. * * Neke uobičajene boje navedene su u nastavku, ili ih napravite sami * * NAVEDITE NARUDŽBA: * U glavnom dijelu programa morate navesti redoslijed * u kojem želite da se boje pojavljuju, npr. * crossFade (crveno); * crossFade (zeleno); * crossFade (plavo); * * Te će se boje pojavljivati tim redoslijedom, blijedeći iz * jedne boje u sljedeću * * Osim toga, postoji 5 izbornih postavki koje možete prilagoditi: * 1. Početna boja je postavljena na crnu (tako da prva boja blijedi in), ali * možete postaviti početnu boju kao bilo koju drugu boju * 2. Unutarnja petlja radi za 1020 interacija; varijabla "čekanja" * postavlja približno trajanje jednog unakrsnog fadea. U teoriji, * 'čekanje' od 10 ms trebalo bi napraviti crossFade od ~ 10 sekundi. U * praksi, ostale funkcije koje kod obavlja sporo * do ~ 11 sekundi na mojoj ploči. YMMV. * 3. Ako je 'repeat' postavljeno na 0, program će se ponavljati u nedogled. * ako je postavljeno na broj, to će se ponavljati toliko puta, * a zatim se zaustaviti na posljednjoj boji u nizu. (Postavite 'return' na 1, * i učinite posljednju boju crnom ako želite da na kraju izblijedi.) * 4. Postoji izborna varijabla 'hold' koja pasivira * program za 'hold' milisekunde kada boja je potpuna, * ali prije nego počne sljedeća boja. * 5. Postavite zastavicu DEBUG na 1 ako želite da se izlaz za ispravljanje pogrešaka * pošalje na serijski monitor. * * Unutrašnjost programa nije komplicirana, ali je * pomalo nemirna - unutarnji rad objašnjen je * ispod glavne petlje. * * Travanj 2007, Clay Shirky *
/ Izlaz
int grnPin = 9; // Zelena LED, spojena na digitalni pin 10 int redPin = 10; // Crvena LED, spojena na digitalni pin 9 int bluPin = 11; // Plava LED, spojena na digitalni pin 11
// Nizovi boja
int crna [3] = {0, 0, 0}; int bijela [3] = {100, 100, 100}; int crveno [3] = {100, 0, 0}; int zelena [3] = {0, 100, 0}; int plava [3] = {0, 0, 100}; int žuta [3] = {40, 95, 0}; int dimWhite [3] = {30, 30, 30}; // itd.
// Postavljanje početne boje
int redVal = crno [0]; int grnVal = crno [1]; int bluVal = crno [2];
int čekanje = 3; // 10 ms interno kašnjenje crossFade; povećati za sporije blijeđenje
int hold = 0; // Izborno držanje kad je boja potpuna, prije sljedećeg crossFade int DEBUG = 0; // DEBUG brojač; ako je postavljeno na 1, vratit će vrijednosti natrag putem serijskog int loopCount = 60; // Koliko često bi DEBUG trebao izvještavati? int ponavljanje = 0; // Koliko puta trebamo proći petlju prije zaustavljanja? (0 bez zaustavljanja) int j = 0; // Brojač petlji za ponavljanje
// Pokretanje varijabli boja
int prevR = redVal; int prevG = grnVal; int prevB = bluVal;
// Postavljanje LED izlaza
void setup () {pinMode (redPin, OUTPUT); // postavlja pinove kao izlazni pinMode (grnPin, OUTPUT); pinMode (bluPin, OUTPUT);
if (DEBUG) {// Ako želimo vidjeti vrijednosti za ispravljanje pogrešaka …
Serial.begin (9600); //… postavljanje serijskog izlaza}}
// Glavni program: popis redoslijeda unakrsnih uzoraka
void loop () {crossFade (crveno); crossFade (zeleno); crossFade (plavo); crossFade (žuto);
if (ponavljanje) {// Petljamo li konačan broj puta?
j += 1; if (j> = repeat) {// Jesmo li već stigli? izlaz (j); // Ako je tako, prestanite. }}}
/* ISPOD OVOG LINIJA JE MATEMATIKA - NE TREBATE TO MJENJATI OSNOVNO
* * Program radi na sljedeći način: * Zamislite unakrsni prelaz koji pomiče crvenu LED od 0-10, * zelenu od 0-5, a plavu od 10 do 7, u * deset koraka. * Željeli bismo izbrojati 10 koraka i povećati ili * smanjiti vrijednosti boje u ravnomjerno povećanim koracima. * Zamislite da + označava povećanje vrijednosti za 1, a a - * jednako snižavanju. Naše blijeđenje u 10 koraka izgledalo bi ovako: * * 1 2 3 4 5 6 7 8 9 10 * R + + + + + + + + + + * G + + + + + + B - - - * * Crvena se diže od 0 do 10 u deset koraka, zelena od * 0-5 u 5 koraka, a plava pada s 10 do 7 u tri koraka. * * U stvarnom programu postoci boja se pretvaraju u vrijednosti * 0-255, a postoji 1020 koraka (255 * 4). * * Da bismo shvatili koliki bi trebao biti korak između jedne gore ili * dolje kvačice jedne od LED vrijednosti, zovemo CalcuStep (), * koji izračunava apsolutni jaz između početne i krajnje vrijednosti, * a zatim dijeli taj razmak s 1020 kako bi odredio veličinu koraka * između prilagodbi vrijednosti. */
int CalculateStep (int prevValue, int endValue) {
int step = endValue - prevValue; // Koliki je ukupni jaz? if (korak) {// Ako nije nula, korak = 1020/korak; // podijeli sa 1020} return step; }
/* Sljedeća funkcija je CalcuVal. Kad vrijednost petlje, i, * dostigne veličinu koraka prikladnu za jednu od * boja, povećava ili smanjuje vrijednost te boje za 1. * (R, G i B se računaju zasebno.) */
int CalculatorVal (int korak, int val, int i) {
if ((step) && i % step == 0) {// Ako korak nije nula i vrijeme je za promjenu vrijednosti, if (korak> 0) {// uvećava vrijednost ako je korak pozitivan … val += 1; } else if (korak 255) {val = 255; } else if (val <0) {val = 0; } povratni val; }
/* crossFade () pretvara postotne boje u a
* Raspon 0-255, zatim petlja 1020 puta, provjeravajući je li * vrijednost potrebno ažurirati svaki put, a zatim upisuje * vrijednosti boje na ispravne pinove. */
void crossFade (int boja [3]) {
// Pretvori u 0-255 int R = (boja [0] * 255) / 100; int G = (boja [1] * 255) / 100; int B = (boja [2] * 255) / 100;
int korakR = izračunatiKorak (prevR, R);
int korakG = izračunatikorak (prevG, G); int korakB = izračunatiKorak (prevB, B);
za (int i = 0; i <= 1020; i ++) {redVal = izračunajVal (stepR, redVal, i); grnVal = izračunatiVal (stepG, grnVal, i); bluVal = izračunajVal (stepB, bluVal, i);
analogWrite (redPin, redVal); // Zapis trenutnih vrijednosti na LED pinove
analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal);
odgoda (čekanje); // Pauza za 'čekanje' milisekundi prije nastavka petlje
if (DEBUG) {// Ako želimo serijski izlaz, ispišite ga na
if (i == 0 ili i % loopCount == 0) {// početak, i svaki loopCount puta Serial.print ("Petlja/RGB: #"); Serijski.ispis (i); Serial.print ("|"); Serijski.ispis (redVal); Serial.print (" /"); Serijski.ispis (grnVal); Serial.print (" /"); Serial.println (bluVal); } DEBUG += 1; }} // Ažuriranje trenutnih vrijednosti za sljedeću petlju prevR = redVal; prevG = grnVal; prevB = bluVal; odgoda (zadržavanje); // Pauziraj za opcionalno 'čekanje' milisekundi prije nastavka petlje}
Korak 2: Omotajte drvo
Koristio sam vodootporne trake jer će biti na otvorenom. Zaista su se držali sami, ali brzo sam se nadovezao žičanim vezama kako bih bio siguran da ostaju na mjestu. Jednostavno i lako hakiranje. Sposobnost napajanja trake olakšala je napajanje izvora napajanja dolje i izvlačenje struje s vrha do zvijezde.
Korak 3: Ne zaboravite zvijezdu na vrhu
Za zvijezdu sam upotrijebio par čipova od 10 W kako bih privukao pozornost. Lemio sam ih na bakreni lim kao hladnjak. Mogao sam upotrijebiti više trake budući da je ostalo malo.
Korak 4: Isprobajte
U prvom pokušaju brzina je bila prebrza …
Kad sam se smirio, izgledalo je prilično dobro.
Preporučeni:
RGB-LED žičano stablo: 9 koraka (sa slikama)
RGB-LED žičana stabla: Želim podijeliti s vama svoje RGB-LED žičano stablo. Jedne večeri sjetio sam se kako sam kao klinac gradio žicu. Danas jako volim graditi male elektroničke projekte s mikrokontrolerima sličnim arduinu, posebno sa LED diodama. Pa sam pomislio u sebi
Interaktivno stablo: 10 koraka
Interaktivno stablo: Zanimljiva tradicija u vezi s doktorskim radom i tezom o licenciranju jest ta da su obješena na drvo u glavnoj knjižnici KTH -a prije javne obrane/seminara. Stoga, kao projekt za naše projektiranje i realizaciju fizičkih interakcija c
RGB LED Maker stablo: 15 koraka (sa slikama)
RGB LED Maker stablo: Naš lokalni proizvođački prostor sponzorirao je stablo koje će biti izloženo na glavnoj ulici u prosincu (2018.). Tijekom naše brainstorming sesije došli smo na ideju da postavimo smiješnu količinu LED dioda na drvo umjesto tradicionalnog ukrasa
RGB LED optičko stablo (poznato i kao Project Sparkle): 6 koraka
RGB LED optičko stablo (poznato i kao Project Sparkle): Smatrate li da je vaša soba previše dosadna? Želite li tome dodati malo sjaja? Ovdje pročitajte kako uzeti RGB LED, dodati malo optičke žice i učiniti da zasja! Osnovni cilj projekta Project Sparkle je uzimanje super svijetle LED diode s dodatnim svjetlovodnim kabelom s krajnjim sjajem
Spiralno vođeno božićno drvce: 4 koraka (sa slikama)
Spiralno vođeno božićno drvce: Pozdrav prijatelji U ovom nesavladivom božićnom drvcu napravit ćemo spiralno božićno drvce