Obsah:

LED špirálový strom: 4 kroky (s obrázkami)
LED špirálový strom: 4 kroky (s obrázkami)

Video: LED špirálový strom: 4 kroky (s obrázkami)

Video: LED špirálový strom: 4 kroky (s obrázkami)
Video: 32.G 160M2 DE VOLIGES en pin Douglas! Un plafond rustique et chaleureux ! (sous-titrée) 2024, Júl
Anonim
LED špirálový strom
LED špirálový strom
LED špirálový strom
LED špirálový strom
LED špirálový strom
LED špirálový strom

Milujem všetky druhy LED pásov. Urobil som s nimi pekné dúhové svetlo. Užitočné sú aj tie neadresné. Vytvoril som svetlé vonkajšie dáždnik na trhu tým, že som ich pripevnil k rebrám unbrelly, takže keď mi spirálny strom vyfúkol, rozhodol som sa omotať okolo neho dlhý LED pás.

Krok 1: Ovládač

Ovládač
Ovládač
Ovládač
Ovládač
Ovládač
Ovládač

Rozhodol som sa použiť neriešiteľné RGB diódy. To znamená, že môžem mať naprogramovaný efekt, ale všetky LED diódy menia farbu súčasne. To tiež znamená, že bude potrebný ovládač. Mohol som použiť arduino uno a vykonať prvé testy pomocou RGB štítu, ale nakoniec som použil vlastnú jednoduchú dosku s holým čipom Atmega328. Stačilo prepnúť cieľový programátor a naprogramovať čip priamo.

Zostalo mi veľa týchto dosiek z iných projektov žiaroviek. Nebojte sa namiesto toho použiť lacný vložený predprogramovaný ovládač, ako som to urobil na svojom dáždniku.

Nakoniec som ako základ stromu použil pomalú ukážku crossfade.

/** Kód pre krížové stmievanie 3 LED diódy, červená, zelená a modrá (RGB) * Na dosiahnutie vyblednutia musíte urobiť dve veci: * 1. Popíšte farby, ktoré chcete, aby sa zobrazovali * 2. Vytvorte zoznam požadovaného poradia vyblednú * * POPIS FARBY: * Farba je len súbor troch percent, 0-100, * ovládanie červenej, zelenej a modrej LED diódy * * Červená je červená LED pri plnom, modrá a zelená vypnutá * int červená = {100, 0, 0} * Tmavá biela sú všetky tri diódy LED pri 30% * int dimWhite = {30, 30, 30} * atď. * * Niektoré bežné farby sú uvedené nižšie, alebo si vytvorte vlastné * * ZOZNAM OBJEDNÁVKA: * V hlavnej časti programu musíte uviesť poradie *, v ktorom sa majú farby zobrazovať, napr. * crossFade (červená); * crossFade (zelená); * crossFade (modrý); * * Tieto farby sa zobrazia v uvedenom poradí, vyblednú z * jednej farby do ďalšej * * Okrem toho je k dispozícii 5 voliteľných nastavení, ktoré môžete upraviť: * 1. Počiatočná farba je nastavená na čiernu (takže prvá farba vybledne in), ale * môžete nastaviť počiatočnú farbu na akúkoľvek inú farbu * 2. Vnútorná slučka beží na 1020 interakcií; premenná 'wait' * nastavuje približné trvanie jedného crossfade. Teoreticky by * pri „čakaní“10 ms malo dôjsť k prechodovému vyblednutiu ~ 10 sekúnd. V praxi * ostatné funkcie, ktoré kód vykonáva, spomaľujú toto * až na ~ 11 sekúnd na mojej doske. YMMV. * 3. Ak je „opakovanie“nastavené na 0, program sa bude opakovať neobmedzene dlho. * ak je nastavené na číslo, opakuje sa v cykle, * potom sa zastaví na poslednej farbe v poradí. (Nastavte „návrat“na 1, * a urobte poslednú farbu čiernou, ak chcete, aby na konci zmizla.) * 4. K dispozícii je voliteľná premenná „podržať“, ktorá program * podržiava v milisekundách, keď farba je úplná, * ale skôr, ako sa začne ďalšia farba. * 5. Nastavte príznak DEBUG na 1, ak chcete, aby sa výstup ladenia * odosielal na sériový monitor. * * Interné prvky programu nie sú komplikované, ale * sú trochu rozporuplné - vnútorné fungovanie je vysvetlené * pod hlavnou slučkou. * * Apríl 2007, Clay Shirky *

/ Výkon

int grnPin = 9; // Zelená LED dióda, pripojená k digitálnemu pinu 10 int redPin = 10; // Červená LED dióda, pripojená k digitálnemu pinu 9 int bluPin = 11; // Modrá LED dióda, pripojená k digitálnemu kolíku 11

// Farebné polia

int čierna [3] = {0, 0, 0}; int biela [3] = {100, 100, 100}; int červená [3] = {100, 0, 0}; int zelená [3] = {0, 100, 0}; int modrá [3] = {0, 0, 100}; int žltá [3] = {40, 95, 0}; int dimWhite [3] = {30, 30, 30}; // atď.

// Nastavenie počiatočnej farby

int redVal = čierna [0]; int grnVal = čierna [1]; int bluVal = čierna [2];

int čakať = 3; // 10ms interné crossFade oneskorenie; zvýšenie pre pomalšie blednutie

int hold = 0; // Voliteľné podržanie, keď je farba úplná, pred ďalším crossFade int DEBUG = 0; // počítadlo DEBUG; ak je nastavený na 1, zapíše hodnoty späť cez serial int loopCount = 60; // Ako často by sa mal DEBUG hlásiť? int opakovanie = 0; // Koľkokrát by sme sa mali zastaviť, kým sa zastavíme? (0 bez zastavenia) int j = 0; // Počítadlo slučiek na opakovanie

// Inicializácia farebných premenných

int prevR = redVal; int prevG = grnVal; int prevB = bluVal;

// Nastavte výstupy LED

void setup () {pinMode (redPin, OUTPUT); // nastaví piny ako výstupný pinMode (grnPin, OUTPUT); pinMode (bluPin, OUTPUT);

if (DEBUG) {// Ak chceme vidieť hodnoty pre ladenie …

Serial.begin (9600); //… nastaviť sériový výstup}}

// Hlavný program: uveďte poradie crossfades

void loop () {crossFade (červená); crossFade (zelená); crossFade (modrá); crossFade (žltá);

if (opakovať) {// Zopakujeme niekoľko krát?

j += 1; if (j> = opakovať) {// Už sme tam? výstup (j); // Ak áno, prestaň. }}}

/* NIŽŠÍ TENTO RIADOK JE MATH - TOTO NEMUSÍTE ZMENIŤ ZA ZÁKLADY

* * Program funguje takto: * Predstavte si crossfade, ktorý posúva červenú LED od 0-10, * zelenú od 0-5 a modrú od 10 do 7 v * desiatich krokoch. * Chceli by sme spočítať 10 krokov a zvýšiť alebo * znížiť hodnoty farieb v rovnomerne stupňovaných krokoch. * Predstavte si, že + znamená zvýšenie hodnoty o 1 a a - * sa rovná jej zníženiu. Naše 10 -stupňové vyblednutie by vyzeralo takto: * * 1 2 3 4 5 6 7 8 9 10 * R + + + + + + + + + + + * G + + + + + * B - - - * * Červená farba vychádza z 0 až 10 v desiatich krokoch, zelená od * 0-5 v 5 krokoch a modrá padá z 10 na 7 v troch krokoch. * * V skutočnom programe sú percentá farieb prevedené na hodnoty * 0-255 a existuje 1020 krokov (255 * 4). * * Aby sme zistili, ako veľký krok by mal byť medzi jedným smerom hore alebo * dolu na jednu z hodnôt LED, hovoríme to CalcStep (), *, ktorý vypočíta absolútnu medzeru medzi počiatočnými a koncovými hodnotami, * a potom vydelí túto medzeru 1020, aby určil veľkosť kroku * medzi úpravami hodnoty. */

int CalcStep (int prevValue, int endValue) {

int krok = endValue - prevValue; // Aký je celkový rozdiel? if (krok) {// Ak je nenulový, krok = 1020/krok; // delenie 1020} návratový krok; }

/* Nasledujúca funkcia je CalculateVal. Keď hodnota cyklu, i, * dosiahne veľkosť kroku vhodnú pre jednu z * farieb, zvýši alebo zníži hodnotu tejto farby o 1. * (R, G a B sa vypočítavajú oddelene.) */

int CalcVal (int krok, int val, int i) {

if ((krok) && i % step == 0) {// Ak krok nie je nenulový a je načase zmeniť hodnotu, if (krok> 0) {// zvýši hodnotu, ak je krok kladný … val += 1; } else if (krok 255) {val = 255; } else if (val <0) {val = 0; } návrat val; }

/* crossFade () prevádza percentuálne farby na a

* Rozsah 0-255, potom 1020-krát slučky, kontrola, či * hodnota musí byť aktualizovaná zakaždým, potom zapísať * hodnoty farieb na správne piny. */

void crossFade (vnútorná farba [3]) {

// Previesť na 0-255 int R = (farba [0] * 255) / 100; int G = (farba [1] * 255) / 100; int B = (farba [2] * 255) / 100;

int krokR = countStep (prevR, R);

int krokG = countStep (prevG, G); int krokB = countStep (prevB, B);

pre (int i = 0; i <= 1020; i ++) {redVal = countVal (stepR, redVal, i); grnVal = countVal (stepG, grnVal, i); bluVal = vypočítaťVal (krokB, bluVal, i);

analogWrite (redPin, redVal); // Zapíšte aktuálne hodnoty na piny LED

analogWrite (grnPin, grnVal); analogWrite (bluPin, bluVal);

oneskorenie (čakanie); // Pred pokračovaním v cykle počkajte milisekundy „počkajte“

if (DEBUG) {// Ak chceme sériový výstup, vytlačte ho na

if (i == 0 alebo i % loopCount == 0) {// začiatok 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; }} // Aktualizácia aktuálnych hodnôt pre nasledujúcu slučku prevR = redVal; prevG = grnVal; prevB = bluVal; oneskorenie (podržanie); // Pozastavenie na voliteľné milisekundy „čakanie“pred obnovením cyklu}

Krok 2: Zbaliť strom

Zbaliť strom
Zbaliť strom
Zbaliť strom
Zbaliť strom
Zbaliť strom
Zbaliť strom
Zbaliť strom
Zbaliť strom

Použil som vodotesné pásy, pretože tieto budú vonku. Držali sa samy, ale rýchlo som nadviazal drôtenými väzbami, aby som sa ubezpečil, že zostanú na mieste. Jednoduchý a ľahký hack. Vďaka priechodnej sile pásu pásmo uľahčilo napájanie zdroja dnom a napájanie zhora k hviezde.

Krok 3: Nezabudnite na hviezdu navrchu

Nezabudnite na hviezdu navrchu
Nezabudnite na hviezdu navrchu
Nezabudnite na hviezdu navrchu
Nezabudnite na hviezdu navrchu
Nezabudnite na hviezdu navrchu
Nezabudnite na hviezdu navrchu
Nezabudnite na hviezdu navrchu
Nezabudnite na hviezdu navrchu

Pre hviezdu som použil pár 10W čipov, aby som upútal pozornosť. Spájkoval som ich na medený plech ako chladič. Mohol som použiť viac prúžkov, pretože tam niečo málo zostalo.

Krok 4: Vyskúšajte si to

Image
Image

Prvý pokus mal príliš vysokú rýchlosť …

Keď som to upokojil, vyzeralo to celkom dobre.

Odporúča: