Sadržaj:
- Korak 1: Kontroler
- Korak 2: Omotajte drvo
- Korak 3: Ne zaboravite zvijezdu na vrhu
- Korak 4: Isprobajte
Video: LED spiralno drvo: 4 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Obožavam sve vrste LED traka. Napravio sam lepo svetlo duge sa njima. Čak su i one koje se ne mogu adresirati korisne. Napravio sam sjajan tržnički kišobran za vanjsko svjetlo tako što sam ih pričvrstio na rebra unbrella, pa kad je moje spiralno drvo izletjelo, odlučio sam omotati oko njega dugačku LED traku.
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đe znači da će biti potreban kontroler. Mogao sam koristiti arduino uno i napraviti prve testove koristeći RGB štit, ali na kraju sam koristio prilagođenu pojedinačnu ploču s golim čipom Atmega328. Trebalo je samo promijeniti ciljnog programera i direktno 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 drvo.
/** Kôd za 3 LED-a, crveno, zeleno i plavo (RGB) sa 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 izblede * * OPIS BOJE: * Boja je samo niz od tri procenta, 0-100, * kontrola crvene, zelene i plave LED diode * * Crvena je crvena LED puna, 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 date su ispod, ili ih napravite sami * * NARUDŽBA: * U glavnom dijelu programa morate navesti redoslijed * u kojem želite da se boje pojavljuju, npr. * crossFade (crveno); * crossFade (zelena); * crossFade (plavo); * * Te će se boje pojavljivati tim redoslijedom, blijedeći iz * jedne boje u sljedeću * * Osim toga, postoji 5 opcionalnih 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. Interna petlja radi za 1020 interacija; promenljiva 'wait' * postavlja približno trajanje jednog unakrsnog fadea. U teoriji, * 'čekanje' od 10 ms bi trebalo napraviti crossFade od ~ 10 sekundi. U * praksi, ostale funkcije koje kod izvršava sporo * sve do ~ 11 sekundi na mojoj ploči. YMMV. * 3. Ako je 'repeat' postavljeno na 0, program će se petljati u nedogled. * ako je postavljeno na broj, to će se ponavljati taj broj puta, * a zatim će se zaustaviti na posljednjoj boji u nizu. (Postavite 'return' na 1, * i učinite da posljednja boja bude crna ako želite da na kraju izblijedi.) * 4. Postoji opcionalna 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 otklanjanje grešaka * pošalje na serijski monitor. * * Unutrašnjost programa nije komplikovana, ali je * malo nemirna - unutrašnji rad je objašnjen * ispod glavne petlje. * * April 2007, Clay Shirky *
/ Izlaz
int grnPin = 9; // Zelena LED dioda, 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 red [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 wait = 3; // 10ms interno kašnjenje crossFade; povećati za sporije blijeđenje
int hold = 0; // Opcionalno zadržavanje kada je boja potpuna, prije sljedećeg crossFade int DEBUG = 0; // DEBUG brojač; ako je postavljeno na 1, upisat će vrijednosti nazad putem serijskog int loopCount = 60; // Koliko često bi DEBUG trebao izvještavati? int repeat = 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 ukrštanja
void loop () {crossFade (crveno); crossFade (zelena); crossFade (plava); crossFade (žuto);
if (repeat) {// Da li petlju ponavljamo konačan broj puta?
j += 1; if (j> = repeat) {// Jesmo li već stigli? izlaz (j); // Ako je tako, zaustavite se. }}}
/* ISPOD OVOG LINIJA JE MATEMATIKA - NE TREBATE OVO PROMIJENITI OSNOVNO
* * Program funkcionira ovako: * Zamislite unakrsni prelaz koji pomiče crvenu LED diodu 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 - * je jednako smanjenju. 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 su pretvoreni u vrijednosti * 0-255, a postoji 1020 koraka (255 * 4). * * Da bismo shvatili koliki bi trebao biti korak između jedne gore ili * donje oznake jedne od LED vrijednosti, zovemo CalcuStep (), * koji izračunava apsolutni jaz između početne i krajnje vrijednosti, * a zatim dijeli taj jaz s 1020 kako bi odredio veličinu koraka * između podešavanja vrijednosti. */
int CalculateStep (int prevValue, int endValue) {
int step = endValue - prevValue; // Koliki je ukupni jaz? if (korak) {// Ako nije nula, korak = 1020/korak; // podijeljeno sa 1020} return step; }
/* Sljedeća funkcija je CalcuVal. Kada je vrijednost petlje, i, * dostigne veličinu koraka odgovarajuću 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 ((korak) && 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
* Opseg 0-255, zatim petlja 1020 puta, provjeravajući da li * vrijednost treba ažurirati svaki put, 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 stepR = CalculateStep (prevR, R);
int korakG = izračunatikorak (prevG, G); int korakB = izračunatikorak (prevB, B);
for (int i = 0; i <= 1020; i ++) {redVal = izračunajVal (stepR, redVal, i); grnVal = izračunajVal (stepG, grnVal, i); bluVal = CalcuVal (stepB, bluVal, i);
analogWrite (redPin, redVal); // Zapis trenutnih vrijednosti na LED pinove
analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal);
kašnjenje (č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: #"); Serial.print (i); Serial.print ("|"); Serial.print (redVal); Serial.print (" /"); Serial.print (grnVal); Serial.print (" /"); Serial.println (bluVal); } DEBUG += 1; }} // Ažuriranje trenutnih vrijednosti za sljedeću petlju prevR = redVal; prevG = grnVal; prevB = bluVal; kašnjenje (zadržavanje); // Pauziranje 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 koristio par čipova od 10 W kako bih privukao pažnju. Lemio sam ih na bakreni lim kao hladnjak. Mogao sam upotrijebiti više trake jer je ostalo malo.
Korak 4: Isprobajte
U prvom pokušaju brzina je bila prevelika …
Kad sam se smirio, izgledalo je prilično dobro.
Preporučuje se:
Morse dekoder za binarno drvo: 7 koraka (sa slikama)
Morse dekoder binarnog stabla: a.članci {font-size: 110.0%; font-weight: bold; font-style: italic; dekoracija teksta: nema; background-color: red;} a.članci: hover {background-color: black;} Ovo uputstvo objašnjava kako dekodirati Morzeovu azbuku koristeći Arduino Uno R3.T
RGB-LED žičano drvo: 9 koraka (sa slikama)
RGB-LED žičano stablo: Želim podijeliti sa vama svoje RGB-LED žičano drvo. Jedne večeri sjetio sam se kako sam kao klinac gradio žicu. Danas zaista uživam u izgradnji malih elektroničkih projekata s mikrokontrolerima sličnim arduinu, posebno sa LED diodama. Pa sam pomislio u sebi
Čari za drvo: 6 koraka (sa slikama)
Čari za drvo: Koristeći e-otpad ili bilo koji drugi materijal za izradu i savitljivu žicu možete napraviti vlastitu talismansku kreaciju koja se koristi za označavanje mjesta, događaja ili vremena; kolokvijalno poznat kao čari od drveta. Ovu ideju sam imao na završnoj godini srednje škole, dok je većina mojih
Spiralno vođeno božićno drvce: 4 koraka (sa slikama)
Spiralno vođeno božićno drvce: Zdravo prijatelji U ovom nedokučivom ćemo napraviti spiralno vođeno božićno drvce
Burner sa USB pogonom! Ovaj projekt može izgorjeti kroz plastiku / drvo / papir (zabavan projekt također mora biti vrlo fino drvo): 3 koraka
Gorionik sa USB pogonom! Ovaj projekt može izgorjeti kroz plastiku / drvo / papir (zabavan projekt također mora biti od vrlo finog drva): NEMOJTE OVO KORISTITI KORIŠĆENJE USB -a !!!! iz svih komentara saznao sam da može oštetiti vaš računar. moj kompjuter je u redu. Koristite punjač za telefon od 600m 5v. Koristio sam ovo i radi dobro i ništa se ne može oštetiti ako upotrijebite sigurnosni utikač za zaustavljanje napajanja