Turinys:
- 1 žingsnis: valdiklis
- 2 žingsnis: apvyniokite medį
- 3 žingsnis: nepamirškite žvaigždės viršuje
- 4 žingsnis: Išbandykite
Video: LED spiralinis medis: 4 žingsniai (su paveikslėliais)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Man patinka visų rūšių LED juostos. Aš su jais padariau gražią vaivorykštės šviesą. Net ir tie, kurie nėra adresuojami, yra naudingi. Aš padariau ryškų lauko skėčio lauko žibintą, pritvirtindamas juos prie skėtinių šonkaulių, todėl, sprogus spiraliniam medžiui, aš nusprendžiau apvynioti aplink jį ilgio šviesos diodų juostą.
1 žingsnis: valdiklis
Aš nusprendžiau naudoti adresus neturinčius RGB diodus. Tai reiškia, kad galiu turėti užprogramuotą efektą, tačiau visi šviesos diodai vienu metu keičia spalvą. Tai taip pat reiškia, kad reikės valdiklio. Aš galėjau naudoti „arduino uno“ir atlikti pradinius bandymus naudodami RGB skydą, bet galiausiai naudoju pasirinktinę vieną plokštę su pliku „Atmega328“lustu. Tiesiog reikėjo pakeisti tikslinį programuotoją ir tiesiogiai užprogramuoti lustą.
Aš turėjau daug šių plokščių iš kitų lempų projektų. Vietoj to naudokitės pigiu įterptu valdikliu, kaip tai dariau ant savo skėčio.
Galų gale aš panaudojau lėtą kryžminio demonstravimo demonstraciją kaip medžio pagrindą.
/** Kryžminimo 3 šviesos diodų, raudonų, žalių ir mėlynų (RGB) kodas jie išblėsta * * SPALVOS APRAŠYMAS: * Spalva yra tik trijų procentų masyvas, 0–100, * valdantis raudonus, žalius ir mėlynus šviesos diodus * * Raudonas yra raudonas šviesos diodas, visas mėlynas ir žalias * int raudona = {100, 0, 0} * Blyškiai balta yra visi trys šviesos diodai, esant 30% * int dimWhite = {30, 30, 30} * ir tt * * Kai kurios įprastos spalvos pateikiamos žemiau arba sukurkite patys * * SĄRAŠAS UŽSAKYMAS: * Pagrindinėje programos dalyje turite išvardyti tvarką *, kurioje norite rodyti spalvas, pvz. * crossFade (raudona); * crossFade (žalia); * crossFade (mėlyna); * * Tos spalvos bus rodomos tokia tvarka, išnyks iš * vienos spalvos ir į kitą * * Be to, yra 5 pasirenkami nustatymai, kuriuos galite reguliuoti: * 1. Pradinė spalva nustatyta į juodą (taigi pirmoji spalva išnyks in), bet * galite nustatyti pradinę bet kokios kitos spalvos spalvą * 2. Vidinė kilpa veikia 1020 kartų; „Wait“kintamasis * nustato apytikslę vieno kryžminimo trukmę. Teoriškai * „laukimas“10 ms turėtų padaryti ~ 10 sekundžių kryžminį išnykimą. * Praktikoje kitos funkcijos, kurias kodas atlieka lėtai, * iki mano lentos iki ~ 11 sekundžių. YMMV. * 3. Jei „pakartojimas“yra nustatytas į 0, programa tęsis neribotą laiką. * jei jis nustatytas kaip skaičius, jis pakartos tą skaičių kartų, * tada sustabdys paskutinę sekos spalvą. (Nustatykite „return“į 1, * ir paskutinę spalvą padarykite juodą, jei norite, kad ji išnyktų pabaigoje.) * 4. Yra pasirenkamas „hold“kintamasis, kuris įterpia * programą „hold“milisekundėms, kai spalva baigta, * bet prieš prasidedant kitai spalvai. * 5. Jei norite, kad derinimo išvestis būtų * siunčiama į nuoseklųjį monitorių, nustatykite DEBUG vėliavą į 1. * * Programos vidiniai elementai nėra sudėtingi, tačiau jie yra šiek tiek nerimastingi - vidinė veikla paaiškinta * žemiau pagrindinės kilpos. * * 2007 m. Balandžio mėn., Clay Shirky *
/ Išvestis
int grnPin = 9; // Žalia šviesos diodas, prijungtas prie skaitmeninio kaiščio 10 int redPin = 10; // Raudonas šviesos diodas, prijungtas prie skaitmeninio kaiščio 9 int bluPin = 11; // Mėlynas šviesos diodas, prijungtas prie skaitmeninio kaiščio 11
// Spalvų masyvai
int juoda [3] = {0, 0, 0}; int balta [3] = {100, 100, 100}; int raudona [3] = {100, 0, 0}; int žalia [3] = {0, 100, 0}; int mėlyna [3] = {0, 0, 100}; int geltona [3] = {40, 95, 0}; int dimWhite [3] = {30, 30, 30}; // ir tt
// Nustatykite pradinę spalvą
int redVal = juoda [0]; int grnVal = juoda [1]; int bluVal = juoda [2];
int laukti = 3; // 10ms vidinis crossFade delay; padidinti, kad lėčiau bluktų
int palaikymas = 0; // Pasirenkamas palaikymas, kai spalva baigta, prieš kitą kryžiųFade int DEBUG = 0; // DEBUG skaitiklis; jei nustatyta į 1, įrašys reikšmes atgal per serijinį int loopCount = 60; // Kaip dažnai turėtų pranešti DEBUG? int pakartojimas = 0; // Kiek kartų turėtume kilpoti prieš sustodami? (0 be sustojimo) int j = 0; // Kartojimo ciklo skaitiklis
// Inicijuoti spalvų kintamuosius
int prevR = redVal; int prevG = grnVal; int prevB = bluVal;
// Nustatykite LED išėjimus
void setup () {pinMode (redPin, OUTPUT); // nustato kaiščius kaip išvesties pinMode (grnPin, OUTPUT); pinMode („bluPin“, OUTPUT);
if (DEBUG) {// Jei norime matyti derinimo vertes …
Serial.begin (9600); //… nustatyti serijos išvestį}}
// Pagrindinė programa: išvardykite kryžminimo tvarką
void loop () {crossFade (raudona); crossFade (žalia); crossFade (mėlyna); crossFade (geltona);
jei (kartoti) {// Ar mes cikluojame ribotą skaičių kartų?
j += 1; if (j> = pakartoti) {// Ar mes jau ten? išėjimas (j); // Jei taip, sustok. }}}
/* Žemiau ši eilutė yra matematika - NETURĖTŲ TAI PAKEISTI PAGRINDŲ
* * Programa veikia taip: * Įsivaizduokite kryžminį užtemimą, kuris perkelia raudoną šviesos diodą nuo 0 iki 10, * žalią nuo 0 iki 5 ir mėlyną nuo 10 iki 7, atlikdamas * dešimt žingsnių. * Norėtume suskaičiuoti 10 žingsnių ir padidinti arba * sumažinti spalvų vertes tolygiai pakopomis. * Įsivaizduokite, kad + reiškia vertės padidinimą 1, o a - * sumažina. Mūsų 10 žingsnių išblukimas atrodytų taip: * * 1 2 3 4 5 6 7 8 9 10 * R + + + + + + + + + + + + * G + + + + + * B - - - * * Raudona pakyla nuo Nuo 0 iki 10 per dešimt žingsnių, žalia nuo * 0-5 per 5 žingsnius, o mėlyna spalva nukrenta nuo 10 iki 7 trijų žingsnių. * * Tikrojoje programoje spalvų procentas konvertuojamas į * 0–255 reikšmes ir yra 1020 žingsnių (255 * 4). * * Norėdami išsiaiškinti, koks didelis žingsnis turėtų būti tarp vienos iš LED reikšmių aukštyn arba žemyn, pažymime calcStep (), * kuris apskaičiuoja absoliutų atotrūkį tarp pradžios ir pabaigos verčių, * ir tada padalija tą atotrūkį iš 1020, kad nustatytų žingsnio * dydį tarp vertės koregavimų. */
int calcStep (int prevValue, int endValue) {
int žingsnis = endValue - prevValue; // Koks bendras atotrūkis? if (step) {// Jei jo nulis, žingsnis = 1020/step; // padalinti iš 1020} return step; }
/* Kita funkcija yra calcVal. Kai kilpos vertė, i, * pasiekia žingsnio dydį, tinkamą vienai iš * spalvų, padidina arba sumažina tos spalvos reikšmę 1 *. (R, G ir B apskaičiuojami atskirai.) */
int calcVal (int step, int val, int i) {
if ((žingsnis) && i % step == 0) {// Jei žingsnis yra ne nulis ir laikas keisti vertę, if (žingsnis> 0) {// padidinkite vertę, jei žingsnis teigiamas… val += 1; } else if (255 žingsnis) {val = 255; } else if (val <0) {val = 0; } return val; }
/* crossFade () konvertuoja procentines spalvas į a
* Diapazonas nuo 0 iki 255, tada ciklas 1020 kartų, tikrinant, ar * kiekvieną kartą reikia atnaujinti vertę, tada įrašykite * spalvų reikšmes į teisingus kaiščius. */
void crossFade (int spalva [3]) {
// Konvertuoti į 0-255 int R = (spalva [0] * 255) / 100; int G = (spalva [1] * 255) / 100; int B = (spalva [2] * 255) / 100;
int stepR = apskaičiuoti žingsnį (prevR, R);
int stepG = calcStep (prevG, G); int stepB = apskaičiuotiStep (prevB, B);
už (int i = 0; i <= 1020; i ++) {redVal = apskaičiuotiVal (žingsnisR, redVal, i); grnVal = apskaičiuotiVal (stepG, grnVal, i); bluVal = apskaičiuotiVal (žingsnis B, bluVal, i);
analogWrite (redPin, redVal); // Įrašykite esamas reikšmes į LED kaiščius
analogWrite (grnPin, grnVal); analogWrite („bluPin“, „bluVal“);
atidėti (laukti); // Sustabdykite „palaukite“milisekundes prieš atnaujindami ciklą
if (DEBUG) {// Jei norime serijinės išvesties, atspausdinkite ją adresu
if (i == 0 arba i % loopCount == 0) {// pradžia ir kiekviena kilpaCount kartus Serial.print ("Loop/RGB: #"); Serijinis atspaudas (i); Serial.print ("|"); Serial.print (redVal); Serial.print (" /"); Serial.print (grnVal); Serial.print (" /"); Serial.println („bluVal“); } DEBUG += 1; }} // Atnaujinti dabartines kitos ciklo reikšmes prevR = redVal; prevG = grnVal; prevB = bluVal; atidėti (sulaikyti); // Pristabdykite pasirinktinai „palaukite“milisekundes prieš atnaujindami ciklą}
2 žingsnis: apvyniokite medį
Aš naudoju vandeniui atsparias juosteles, nes jos bus lauke. Jie laikėsi patys, bet aš greitai sekiau vielinius ryšius, kad įsitikinčiau, jog jie lieka vietoje. Paprastas ir lengvas įsilaužimas. Dėl juostos energijos tiekimo galios buvo lengva tiekti maitinimo šaltinį į apačią ir išvesti elektros energiją iš viršaus į žvaigždę.
3 žingsnis: nepamirškite žvaigždės viršuje
Dėl žvaigždės aš panaudojau 10W mikroschemų porą, kad atkreipčiau dėmesį. Lituodavau juos prie vario lakšto kaip radiatorių. Galėjau naudoti daugiau juostelių, nes liko šiek tiek.
4 žingsnis: Išbandykite
Pirmasis bandymas buvo per greitas …
Kai nusiraminau, atrodė gana gerai.
Rekomenduojamas:
„Neopixel Led“dizainerių medis: 5 žingsniai
„Neopixel Led Designer Tree“: tai yra pamoka sukurti dizainerio medį naudojant „Neopixel“šviesos diodus. Tai tik paprastas, taip nesunkiai pagaminamas darbas, kuriam reikia mažiau pastangų, tačiau jis suteikia nuostabų šedevrą, kuris gali patraukti visų dėmesį
RGB-LED vielos medis: 9 žingsniai (su nuotraukomis)
RGB-LED vielos medis: noriu pasidalinti su jumis savo RGB-LED vielos medžiu. Vieną vakarą prisiminiau, kaip vaikystėje statiau vielinius medžius. Šiais laikais man labai patinka kurti nedidelius elektroninius projektus su mikrovaldikliais, panašiais į arduino, ypač su šviesos diodais. Taigi pagalvojau sau
RGB LED kūrėjo medis: 15 žingsnių (su paveikslėliais)
„RGB LED Maker Tree“: mūsų vietinė kūrėjų erdvė rėmė medį, kuris bus rodomas pagrindinėje gatvėje gruodžio mėnesį (2018 m.). Smegenų šturmo metu mes sugalvojome vietoje tradicinio papuošalo ant medžio pastatyti juokingą šviesos diodų skaičių
RGB LED šviesolaidinis medis (dar žinomas kaip „Project Sparkle“): 6 žingsniai
RGB LED šviesolaidinis medis (dar žinomas kaip „Project Sparkle“): ar jūsų kambarys yra per daug nuobodus? Norite į jį įnešti šiek tiek blizgesio? Skaitykite čia, kaip paimti RGB šviesos diodą, pridėti šviesolaidinį laidą ir padaryti jį ŠVYT! Pagrindinis projekto „Sparkle“tikslas yra paimti itin ryškų šviesos diodą ir galinio švytėjimo šviesolaidinį kabelį
Gyvybės medis („Arduino“talpinis jutiklinis jutiklis, varomas servo varikliu): 6 žingsniai (su paveikslėliais)
Gyvybės medis („Arduino“talpinis jutiklinis jutiklis, varantis servo variklį): Šiam projektui mes sukūrėme ryžių duodantį medį, kurį sudarė talpinis jutiklinis jutiklis ir servo variklis. Palietus kilimėlį, bus suaktyvintas servo variklis ir bus išleisti ryžiai (ar viskas, ką norite įdėti). Štai trumpas vaizdo įrašas