Obsah:
Video: LED spirálový strom: 4 kroky (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
Miluji všechny druhy LED pásků. Udělal jsem s nimi pěkné duhové světlo. Užitečné jsou i ty neadresné. Vytvořil jsem jasný tržní slunečník venkovní světlo tím, že jsem je připevnil k žebrům unbrella, takže když můj spirálový strom vyfoukl, rozhodl jsem se omotat kolem něj dlouhý LED pás.
Krok 1: Ovladač
Rozhodl jsem se použít neadresovatelné LED diody RGB. To znamená, že mohu mít naprogramovaný efekt, ale všechny LED diody mění barvu současně. To také znamená, že bude potřeba ovladač. Mohl jsem použít arduino uno a provést počáteční testy pomocí RGB štítu, ale nakonec jsem použil vlastní desku s holým čipem Atmega328. Stačilo přepnout cílový programátor a naprogramovat čip přímo.
Měl jsem spoustu těchto desek, které zbyly z jiných projektů lamp. Nebojte se místo toho použít levný řadový předprogramovaný ovladač, jako jsem to udělal na svém deštníku.
Nakonec jsem použil jako základ stromu pomalé crossfade demo.
/** Kód pro křížové blednutí 3 LED diod, červená, zelená a modrá (RGB) * Chcete-li vytvořit vyblednutí, musíte udělat dvě věci: * 1. Popište barvy, které chcete zobrazit * 2. Vytvořte seznam požadovaného pořadí aby vybledly * * POPIS BARVY: * Barva je jen pole tří procent, 0-100, * ovládání červené, zelené a modré LED diody * * Červená je červená LED při plném, modrá a zelená vypnutá * int červená = {100, 0, 0} * Ztlumit bílou jsou všechny tři LED při 30% * int dimWhite = {30, 30, 30} * atd. * * Některé běžné barvy jsou uvedeny níže, nebo si vytvořte vlastní * * SEZNAM OBJEDNÁVKA: * V hlavní části programu musíte uvést pořadí *, ve kterém se mají barvy zobrazovat, např. * crossFade (červená); * crossFade (zelená); * crossFade (modrá); * * Tyto barvy se objeví v uvedeném pořadí, vyblednou z * jedné barvy do další * * Kromě toho je k dispozici 5 volitelných nastavení, která můžete upravit: * 1. Počáteční barva je nastavena na černou (takže první barva vybledne in), ale * můžete nastavit počáteční barvu na jakoukoli jinou barvu * 2. Vnitřní smyčka běží na 1020 interací; proměnná 'wait' * nastavuje přibližnou dobu trvání jednoho crossfade. Teoreticky * při „čekání“10 ms by mělo dojít ke zkřížení ~ 10 sekund. V * praxi ostatní funkce, které kód provádí, zpomalí toto * až na ~ 11 sekund na mé desce. YMMV. * 3. Pokud je 'opakování' nastaveno na 0, program se bude opakovat neomezeně dlouho. * pokud je nastaveno na číslo, bude se to opakovat, * pak se zastaví na poslední barvě v sekvenci. (Nastavte 'návrat' na 1, * a udělejte poslední barvu černou, pokud chcete, aby na konci zmizela.) * 4. K dispozici je volitelná proměnná 'hold', která pasuje program * pro 'hold' milisekundy, když barva je úplná, * ale než začne další barva. * 5. Nastavte příznak DEBUG na 1, pokud chcete, aby byl výstup ladění * odeslán na sériový monitor. * * Vnitřnosti programu nejsou složité, ale * jsou trochu rozporuplné - vnitřní fungování je vysvětleno * pod hlavní smyčkou. * * Duben 2007, Clay Shirky *
/ Výstup
int grnPin = 9; // Zelená LED, připojená k digitálnímu pinu 10 int redPin = 10; // Červená LED, připojeno k digitálnímu pinu 9 int bluPin = 11; // Modrá LED, připojená k digitálnímu pinu 11
// Barevná pole
int černá [3] = {0, 0, 0}; int bílá [3] = {100, 100, 100}; int červená [3] = {100, 0, 0}; int zelená [3] = {0, 100, 0}; int modrá [3] = {0, 0, 100}; int žlutá [3] = {40, 95, 0}; int dimWhite [3] = {30, 30, 30}; // atd.
// Nastavit počáteční barvu
int redVal = černý [0]; int grnVal = černý [1]; int bluVal = černý [2];
int čekat = 3; // 10ms interní crossFade zpoždění; zvýšení pro pomalejší vyblednutí
int hold = 0; // Volitelné podržení po dokončení barvy, před dalším crossFade int DEBUG = 0; // počitadlo DEBUG; pokud je nastaveno na 1, zapíše hodnoty zpět přes serial int loopCount = 60; // Jak často by se měl DEBUG hlásit? int opakování = 0; // Kolikrát bychom se měli zastavit, než zastavíme? (0 bez zastavení) int j = 0; // Počitadlo smyček pro opakování
// Inicializace barevných proměnných
int prevR = redVal; int prevG = grnVal; int prevB = bluVal;
// Nastavte výstupy LED
void setup () {pinMode (redPin, OUTPUT); // nastaví piny jako výstupní pinMode (grnPin, OUTPUT); pinMode (bluPin, OUTPUT);
if (DEBUG) {// Pokud chceme vidět hodnoty pro ladění…
Serial.begin (9600); //… nastavit sériový výstup}}
// Hlavní program: seznam pořadí crossfade
void loop () {crossFade (červená); crossFade (zelená); crossFade (modrá); crossFade (žlutá);
if (opakovat) {// Smyčkujeme konečný počet opakování?
j += 1; if (j> = opakovat) {// Už jsme tam? exit (j); // Pokud ano, přestaň. }}}
/* NÍŽE TATO ŘADA JE MATH - TOTO NEMUSÍTE ZMĚNIT ZA ZÁKLADY
* * Program funguje takto: * Představte si crossfade, který posouvá červenou LED od 0-10, * zelenou od 0-5 a modrou od 10 do 7, v * deseti krocích. * Chtěli bychom spočítat 10 kroků a zvýšit nebo * snížit hodnoty barev v rovnoměrně odstupňovaných krocích. * Představte si, že + znamená zvýšení hodnoty o 1 a a - * se rovná snížení. Naše 10 stupňové vyblednutí by vypadalo takto: * * 1 2 3 4 5 6 7 8 9 10 * R + + + + + + + + + + + * G + + + + + * B - - - * * Červená stoupá od 0 až 10 v deseti krocích, zelená od * 0-5 v 5 krocích a modrá klesá od 10 do 7 ve třech krocích. * * Ve skutečném programu jsou procenta barev převedena na hodnoty * 0-255 a existuje 1020 kroků (255 * 4). * * Abychom zjistili, jak velký krok by měl být mezi jedním vzestupným nebo * zatržítkem jedné z hodnot LED, říkáme CalcStep (), * který vypočítá absolutní mezeru mezi počáteční a koncovou hodnotou, * a poté rozdělí tuto mezeru o 1020, aby určil velikost kroku * mezi úpravami hodnoty. */
int countStep (int prevValue, int endValue) {
int step = endValue - prevValue; // Jaká je celková mezera? if (step) {// Pokud je nenulové, step = 1020/krok; // děleno 1020} návratový krok; }
/* Další funkcí je countVal. Když hodnota smyčky, i, * dosáhne velikosti kroku vhodné pro jednu z * barev, zvýší nebo sníží hodnotu této barvy o 1. * (R, G a B se vypočítávají každý zvlášť.) */
int CalcVal (int krok, int val, int i) {
if ((krok) && i % krok == 0) {// Pokud krok není nenulový a je čas na změnu hodnoty, if (step> 0) {// zvýší hodnotu, pokud je krok kladný… val += 1; } else if (krok 255) {val = 255; } else if (val <0) {val = 0; } návrat val; }
/* crossFade () převede procentní barvy na a
* Rozsah 0-255, poté smyčky 1020krát, kontrola, zda * je třeba hodnotu pokaždé aktualizovat, poté zápis * hodnot barev na správné piny. */
void crossFade (int color [3]) {
// Převést na 0-255 int R = (barva [0] * 255) / 100; int G = (barva [1] * 255) / 100; int B = (barva [2] * 255) / 100;
int krokR = countStep (prevR, R);
int stepG = countStep (předchozí G, G); int krokB = countStep (prevB, B);
pro (int i = 0; i <= 1020; i ++) {redVal = vypočítatVal (stepR, redVal, i); grnVal = countVal (stepG, grnVal, i); bluVal = countVal (stepB, bluVal, i);
analogWrite (redPin, redVal); // Zapisujte aktuální hodnoty na LED piny
analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal);
zpoždění (čekání); // Před obnovením smyčky počkejte milisekundy „počkejte“
if (DEBUG) {// Pokud chceme sériový výstup, vytiskněte jej na
if (i == 0 nebo i % loopCount == 0) {// začátek a každý loopCount krát Serial.print ("Loop/RGB: #"); Serial.print (i); Serial.print ("|"); Serial.print (redVal); Serial.print (" /"); Serial.print (grnVal); Serial.print (" /"); Serial.println (bluVal); } DEBUG += 1; }} // Aktualizace aktuálních hodnot pro další smyčku prevR = redVal; prevG = grnVal; prevB = bluVal; zpoždění (podržet); // Pozastavení volitelných milisekund „čekání“před obnovením smyčky}
Krok 2: Zabalení stromu
Použil jsem vodotěsné pásy, protože ty budou venku. Drželi se sami, ale rychle jsem je sledoval drátěnými stahovacími páskami, abych se ujistil, že zůstanou na místě. Jednoduchý a snadný hack. Průchodná schopnost proužku usnadnila přívod napájecího zdroje na dno a získání energie z vrcholu ke hvězdě.
Krok 3: Nezapomeňte na hvězdu nahoře
Pro hvězdu jsem použil pár 10W čipů, abych upoutal pozornost. Pájel jsem je na měděný plech jako chladič. Mohl jsem použít více proužků, protože tam trochu zbylo.
Krok 4: Vyzkoušejte to
První pokus měl rychlost příliš vysokou …
Jakmile jsem to uklidnil, vypadalo to docela dobře.
Doporučuje:
RGB-LED drátový strom: 9 kroků (s obrázky)
RGB-LED Wire Tree: Chci se s vámi podělit o svůj RGB-LED drátový strom. Jednoho večera jsem si vzpomněl, že jsem jako dítě stavěl drátěné stromy. V dnešní době mě opravdu baví stavět malé elektronické projekty s mikrokontroléry podobnými arduinu, zejména s LED diodami. Tak jsem si říkal
Strom RGB LED Maker: 15 kroků (s obrázky)
RGB LED Maker Tree: Náš místní makerspace sponzoroval strom, který bude zobrazen na Main Street za měsíc prosinec (2018). Během našeho brainstormingu jsme přišli s nápadem umístit na stromeček směšné množství LED diod místo tradičních ozdob
Vánoční strom se spirálou: 4 kroky (s obrázky)
Spirálově vedený vánoční strom: Ahoj přátelé V tomto nevyzpytatelném si vyrobíme vánoční stromeček se spirálovým ledem
LED vánoční strom!: 4 kroky (s obrázky)
LED vánoční stromeček !: Vánoce nejsou stejné jako vánoční stromeček; ale zadku, bydlím na koleji, nemám prostor dát tu skutečnou. Proto jsem se místo toho rozhodl vyrobit si vlastní vánoční stromeček! Chtěl jsem chvíli experimentovat s akrylem na okraji, ne
RGB LED vánoční strom napájený USB: 9 kroků (s obrázky)
USB napájený RGB LED vánoční stromeček: Rozhodl jsem se, že udělám pár předvánočních dárků pro pár mých podivínských přátel z Makerspace, jsem členem fizzPOP. Rozhodl jsem se, že spíše, že je postavím úplně sám, vyrobím stavebnici, aby si mohli užít zábavu při stavění