Kazalo:
- 1. korak: Krmilnik
- 2. korak: Zavijanje drevesa
- 3. korak: Ne pozabite na zvezdo na vrhu
- 4. korak: Preizkusite
Video: Spiralno drevo LED: 4 koraki (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
Obožujem vse vrste LED trakov. Z njimi sem naredil lepo mavrično luč. Koristne so tudi tiste, ki jih ni mogoče nasloviti. Naredil sem svetlo tržno senčniško zunanjo luč, tako da sem jih pritrdil na rebra unbrella, tako da sem se, ko je moje spiralno drevo izpihnilo, odločil, da okoli njega zavijem dolg led trak.
1. korak: Krmilnik
Odločil sem se, da bom uporabil neozdravljive RGB LED diode. To pomeni, da lahko imam programiran učinek, vendar vse LED diode hkrati spreminjajo barvo. To tudi pomeni, da bo potreben krmilnik. Lahko bi uporabil arduino uno in naredil prve teste z uporabo RGB ščita, vendar sem na koncu uporabil eno ploščo po meri z golim čipom Atmega328. Moral sem samo zamenjati ciljnega programerja in neposredno programirati čip.
Veliko drugih plošč mi je ostalo od drugih projektov svetilk. Uporabite poceni vgrajen vnaprej programiran krmilnik, kot sem to storil na svojem dežniku.
Na koncu sem kot osnovo za drevo uporabil počasen demografski crossfade.
/** Koda za navzkrižno bledenje 3 LED, rdeče, zelene in modre (RGB) * Če želite ustvariti zbledelo, morate narediti dve stvari: * 1. Opišite barve, ki jih želite prikazati * 2. Navedite želeno zaporedje naj zbledijo * * OPIS BARVE: * Barva je le niz treh odstotkov, 0-100, * nadzor rdeče, zelene in modre LED * * Rdeča je rdeča LED v celoti, modra in zelena izključena * int rdeča = {100, 0, 0} * Temno bela so vse tri LED diode pri 30% * int dimWhite = {30, 30, 30} * itd. * Spodaj so navedene nekatere običajne barve ali pa jih naredite sami * * NAROČILO: * V glavnem delu programa morate navesti vrstni red *, v katerem želite prikazati barve, npr. * crossFade (rdeča); * crossFade (zelena); * crossFade (modra); * * Te barve se bodo pojavile v tem vrstnem redu, zbledijo iz * ene barve v naslednjo * * Poleg tega lahko prilagodite še 5 neobveznih nastavitev: * 1. Začetna barva je nastavljena na črno (tako da prva barva zbledi in), vendar * lahko nastavite začetno barvo na katero koli drugo barvo * 2. Notranja zanka deluje za 1020 interakcij; spremenljivka "wait" * določa približno trajanje enega samega navzkrižnega bleščanja. Teoretično bi moralo "čakanje" 10 ms narediti crossFade za ~ 10 sekund. V praksi * druge funkcije, ki jih koda opravlja, počasi * do ~ 11 sekund na moji plošči. YMMV. * 3. Če je 'repeat' nastavljeno na 0, bo program v nedogled. * če je nastavljeno na številko, se bo to število krat ponovilo, * nato pa se ustavilo pri zadnji barvi v zaporedju. (Nastavite 'return' na 1, * in naredite zadnjo barvo črno, če želite, da na koncu zbledi.) * 4. Obstaja neobvezna spremenljivka 'hold', ki program * drži za 'hold' milisekunde, ko barva je popolna *, vendar preden se začne naslednja barva. * 5. Nastavite zastavico DEBUG na 1, če želite, da se izhod za odpravljanje napak * pošlje na serijski monitor. * * Notranjosti programa niso zapletene, vendar so * nekoliko nemirne - notranje delovanje je razloženo * pod glavno zanko. * * April 2007, Clay Shirky *
/ Izhod
int grnPin = 9; // Zelena LED, povezana z digitalnim zatičem 10 int redPin = 10; // Rdeča LED, povezana z digitalnim zatičem 9 int bluPin = 11; // Modra LED, povezana z digitalnim zatičem 11
// Barvni nizi
črna črna [3] = {0, 0, 0}; int bela [3] = {100, 100, 100}; int rdeča [3] = {100, 0, 0}; int zelena [3] = {0, 100, 0}; int modra [3] = {0, 0, 100}; int rumena [3] = {40, 95, 0}; int dimWhite [3] = {30, 30, 30}; // itd.
// Nastavitev začetne barve
int redVal = črna [0]; int grnVal = črna [1]; int bluVal = črna [2];
int čaka = 3; // 10ms notranja zamuda crossFade; povečanje za počasnejše bledenje
int hold = 0; // Izbirno držanje, ko je barva dokončana, pred naslednjim crossFade int DEBUG = 0; // DEBUG števec; če je nastavljeno na 1, bo vrednosti zapisalo nazaj prek zaporednega int loopCount = 60; // Kako pogosto naj poroča DEBUG? int repeat = 0; // Kolikokrat naj se ustavimo, preden se ustavimo? (0 brez ustavitve) int j = 0; // Števec zank za ponavljanje
// Inicializiraj barvne spremenljivke
int prevR = redVal; int prevG = grnVal; int prevB = bluVal;
// Nastavitev LED izhodov
void setup () {pinMode (redPin, OUTPUT); // nastavi nožice kot izhodni pinMode (grnPin, OUTPUT); pinMode (bluPin, OUTPUT);
if (DEBUG) {// Če želimo videti vrednosti za odpravljanje napak …
Serial.begin (9600); //… nastavite serijski izhod}}
// Glavni program: navedite vrstni red navzkrižnih prehodov
void loop () {crossFade (rdeča); crossFade (zelena); crossFade (modra); crossFade (rumena);
if (repeat) {// Ali zanko končamo tolikokrat?
j += 1; if (j> = repeat) {// Smo že tam? izhod (j); // Če je tako, ustavite. }}}
/* POD TA ČRTA JE MATEMA - TEGA NI TREBA MENJATI ZA OSNOVE
* * Program deluje tako: * Predstavljajte si navzkrižno bleščanje, ki premika rdečo LED od 0-10, * zeleno od 0-5 in modro od 10 do 7, v * desetih korakih. * Želeli bi šteti 10 korakov in povečati ali * zmanjšati barvne vrednosti v enakomerno stopnjevanih korakih. * Predstavljajte si, da + označuje zvišanje vrednosti za 1, a - * je enako znižanju. Naša 10 -stopenjska zbledelost bi izgledala tako: * * 1 2 3 4 5 6 7 8 9 10 * R + + + + + + + + + + + G + + + + + B - - - * * Rdeča se dvigne od 0 do 10 v desetih korakih, zelena od * 0-5 v 5 korakih, modra pa pade od 10 do 7 v treh korakih. * * V resničnem programu se odstotki barv pretvorijo v vrednosti * 0-255 in obstaja 1020 korakov (255 * 4). * * Da bi ugotovili, kako velik bi moral biti korak med enim pritiskom navzgor ali * navzdol ene od vrednosti LED, pokličemo CalcuStep (), * ki izračuna absolutno vrzel med začetno in končno vrednostjo, * in nato deli to vrzel z 1020, da določi velikost koraka * med prilagoditvami vrednosti. */
int CalculateStep (int prevValue, int endValue) {
int step = endValue - prevValue; // Kakšna je skupna vrzel? if (korak) {// Če ni nič, je korak = 1020/korak; // deljeno z 1020} povratni korak; }
/* Naslednja funkcija je CalcuVal. Ko vrednost zanke, i, * doseže velikost koraka, primerno za eno od * barv, poveča ali zmanjša vrednost te barve za 1. * (R, G in B se izračunata posebej.) */
int calculatorVal (int step, int val, int i) {
if ((step) && i % step == 0) {// Če korak ni nič in je čas za spremembo vrednosti, if (korak> 0) {// poveča vrednost, če je korak pozitiven… val += 1; } else if (korak 255) {val = 255; } else if (val <0) {val = 0; } povratni ventil; }
/* crossFade () pretvori odstotne barve v a
* Obseg 0-255, nato se ponovi 1020-krat in preveri, ali je treba vrednost * vsakič posodobiti, nato pa * barvne vrednosti zapiše v pravilne zatiče. */
void crossFade (int barva [3]) {
// Pretvori v 0-255 int R = (barva [0] * 255) / 100; int G = (barva [1] * 255) / 100; int B = (barva [2] * 255) / 100;
int korak R = izračunajte korak (prevR, R);
int korakG = izračunajte korak (prevG, G); int korakB = izračunajte korak (prevB, B);
for (int i = 0; i <= 1020; i ++) {redVal = izračunVal (stepR, redVal, i); grnVal = izračunVal (stepG, grnVal, i); bluVal = IzračunajVal (stepB, bluVal, i);
analogWrite (redPin, redVal); // Zapišite trenutne vrednosti na zatiče LED
analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal);
zamuda (čakanje); // Pred nadaljevanjem zanke se ustavite za "počakajte" milisekunde
if (DEBUG) {// Če želimo serijski izhod, ga natisnemo na
if (i == 0 ali i % loopCount == 0) {// začetek in vsak loopCount krat Serial.print ("Zanka/RGB: #"); Serial.print (i); Serial.print ("|"); Serial.print (redVal); Serial.print (" /"); Serial.print (grnVal); Serial.print (" /"); Serial.println (bluVal); } DEBUG += 1; }} // Posodobi trenutne vrednosti za naslednjo zanko prevR = redVal; prevG = grnVal; prevB = bluVal; zamuda (zadrževanje); // Začasno ustavite za milisekunde "čakanja", preden nadaljujete z zanko}
2. korak: Zavijanje drevesa
Uporabil sem nepremočljive trakove, saj bodo ti na prostem. Res so se držali sami, vendar sem hitro nadaljeval z žičnimi vezmi, da sem ostal na mestu. Enostaven in enostaven kramp. Zmogljivost pretočnega napajanja traku je olajšala napajanje napajalnika na dno in napajanje z vrha do zvezde.
3. korak: Ne pozabite na zvezdo na vrhu
Za zvezdo sem uporabil par 10W čipov, da bi pritegnil nekaj pozornosti. Spajal sem jih na bakreno pločevino kot hladilnik. Lahko bi uporabil več trakov, ker je ostalo še malo.
4. korak: Preizkusite
Prvi poskus je bil prehiter …
Ko sem se umiril, je bilo videti zelo dobro.
Priporočena:
Nosilna tekstilna LED za božično drevo // Arbol Navidad Textil Y LED: 3 koraki
Nosilna tekstilna LED za božično drevo // Arbol Navidad Textil Y LED: To je preprost projekt vezja, ki uporablja tekstil za božično sezono, je nosljiv, ker ga lahko dodate v katero koli majico in ponoči boste svetili kot diamant! ---- Es un proyecto simple de circuitos básicos para la temporada navideña, es un vestibl
DIY krog indukcijskega grelnika s plosko spiralno tuljavo (tuljava za palačinke): 3 koraki
DIY krog indukcijskega grelnika s plosko spiralno tuljavo (tuljava za palačinke): Indukcijsko ogrevanje je proces segrevanja električno prevodnega predmeta (običajno kovine) z elektromagnetno indukcijo, skozi toploto, ki jo v objektu ustvarjajo vrtinčni tokovi. V tem videu vam bom pokazal, kako postati močan v
Spiralno vodeno božično drevo: 4 koraki (s slikami)
Spiralno božično drevo pod vodstvom: Pozdravljeni prijatelji V tem nepojmljivem božičnem drevesu bomo naredili spiralno vodilo
Spreminjanje barve LED božično drevo: 3 koraki (s slikami)
Božično drevo, ki spreminja barvo LED: To božično drevo sem lani našel v trgovini za dolar in hotel sem na dno postaviti LED, da ga prižge, a do tega nisem prišel šele leto kasneje. To je zelo preprost projekt, ki zahteva zelo malo spajkanja in naredi lep konec
LED božično drevo!: 4 koraki (s slikami)
LED božično drevo!: Božič ni enak brez božičnega drevesa; ampak rit živim v študentski sobi, nimam prostora, da bi postavil pravega. Zato sem se odločil, da si namesto tega naredim lastno božično drevo! Že nekaj časa sem želel eksperimentirati z akrilnim robom, ki ni osvetljen