Satura rādītājs:

LED spirālveida koks: 4 soļi (ar attēliem)
LED spirālveida koks: 4 soļi (ar attēliem)

Video: LED spirālveida koks: 4 soļi (ar attēliem)

Video: LED spirālveida koks: 4 soļi (ar attēliem)
Video: 🔥 Всё-всё-всё про лямбда-зонды! Зачем нужен этот хитрый кислородный датчик? 2024, Jūlijs
Anonim
LED spirāles koks
LED spirāles koks
LED spirāles koks
LED spirāles koks
LED spirāles koks
LED spirāles koks

Es mīlu visu veidu LED sloksnes. Es ar viņiem izveidoju jauku varavīksnes gaismu. Pat tie, kas nav adresējami, ir noderīgi. Es esmu izveidojis spilgtu tirgus lietussargu āra gaismu, piestiprinot tās pie jumta ribām, tāpēc, kad mans spirālveida koks izpūstas, es nolēmu aptīt tam apkārt garu led sloksni.

1. darbība: kontrolieris

Kontrolieris
Kontrolieris
Kontrolieris
Kontrolieris
Kontrolieris
Kontrolieris

Es nolēmu izmantot neadresējamus RGB gaismas diodes. Tas nozīmē, ka man var būt ieprogrammēts efekts, bet visi gaismas diodes vienlaikus maina krāsu. Tas arī nozīmē, ka būs nepieciešams kontrolieris. Es būtu varējis izmantot arduino uno un veikt sākotnējos testus, izmantojot RGB vairogu, bet galu galā izmantoju pielāgotu vienu dēli ar tukšu Atmega328 mikroshēmu. Vienkārši nācās pārslēgt mērķprogrammētāju un tieši ieprogrammēt mikroshēmu.

Man bija daudz šo dēļu, kas palikuši no citiem lampu projektiem. Jūtieties brīvi izmantot lētu ieprogrammētu kontrolieri, kā es to darīju uz lietussarga.

Es kā koku pamatu izmantoju lēnu krustošanās demonstrāciju.

/** Kods, kas izgaismo 3 gaismas diodes, sarkanas, zaļas un zilas (RGB) * Lai izveidotu izbalēšanu, jums jādara divas lietas: * 1. Aprakstiet krāsas, kuras vēlaties parādīt * 2. Norādiet vēlamo secību tās izgaist * * KRĀSAS APRAKSTĪŠANA: * Krāsa ir tikai trīs procentu masīvs, 0–100, * kas kontrolē sarkanās, zaļās un zilās gaismas diodes * * Sarkanā ir pilnībā sarkana gaismas diode, zila un zaļa * sarkans = {100, 0, 0} * blāvi balts ir visas trīs gaismas diodes ar 30% * int dimWhite = {30, 30, 30} * utt. * * Dažas izplatītākās krāsas ir norādītas zemāk vai arī izveidojiet savu PASŪTĪJUMS: * Programmas galvenajā daļā ir jāuzskaita secība *, kādā vēlaties parādīt krāsas, piem. * crossFade (sarkans); * crossFade (zaļš); * crossFade (zils); * * Šīs krāsas parādīsies šādā secībā, izzūdot * vienā krāsā un nākamajā * * Turklāt ir pieejami 5 papildu iestatījumi, kurus varat pielāgot: * 1. Sākotnējā krāsa ir iestatīta uz melnu (tātad pirmā krāsa izbalē in), bet * sākotnējo krāsu var iestatīt uz jebkuru citu krāsu * 2. Iekšējā cilpa darbojas 1020 mijiedarbībās; mainīgais “gaidīt” * nosaka aptuvenu vienas krustošanās ilgumu. Teorētiski * 10 ms gaidīšanai vajadzētu radīt ~ 10 sekunžu krustu. * Praksē citas funkcijas, kuras kods veic lēni, šajā manā panelī līdz ~ 11 sekundēm. YMMV. * 3. Ja “atkārtot” ir iestatīts uz 0, programma darbosies bezgalīgi. * ja tas ir iestatīts uz skaitli, tas atkārtos šo skaitu ciklu, * tad apstāsies pie pēdējās krāsas secībā. (Iestatiet “atgriešanās” uz 1, * un padariet pēdējo krāsu melnu, ja vēlaties, lai tā izbalētu beigās.) * 4. Pastāv neobligāts “aizturēšanas” mainīgais, kas ievieto * programmu “turēt” milisekundēs, kad krāsa ir pabeigta, * bet pirms nākamās krāsas sākuma. * 5. Iestatiet DEBUG karodziņu uz 1, ja vēlaties, lai atkļūdošanas izvade tiktu * nosūtīta uz sērijas monitoru. * * Programmas iekšpuse nav sarežģīta, taču tā ir nedaudz satraukta - iekšējā darbība ir izskaidrota * zem galvenās cilpas. * * 2007. gada aprīlis, Clay Shirky *

/ Izeja

int grnPin = 9; // Zaļā gaismas diode, savienota ar digitālo tapu 10 int redPin = 10; // Sarkana gaismas diode, savienota ar ciparu tapu 9 int bluPin = 11; // Zila gaismas diode, savienota ar ciparu tapu 11

// Krāsu masīvi

int melns [3] = {0, 0, 0}; int balts [3] = {100, 100, 100}; int red [3] = {100, 0, 0}; int zaļš [3] = {0, 100, 0}; int blue [3] = {0, 0, 100}; int dzeltens [3] = {40, 95, 0}; int dimWhite [3] = {30, 30, 30}; // utt.

// Iestatiet sākotnējo krāsu

int redVal = melns [0]; int grnVal = melns [1]; int bluVal = melns [2];

int gaidīt = 3; // 10 ms iekšējā crossFade aizture; palielināt lēnākam izbalēšanai

int aizturēt = 0; // Neobligāti turiet, kad krāsa ir pabeigta, pirms nākamā crossFade int DEBUG = 0; // DEBUG skaitītājs; ja iestatīts uz 1, rakstīs vērtības atpakaļ, izmantojot seriālo int loopCount = 60; // Cik bieži vajadzētu ziņot par DEBUG? int atkārtojums = 0; // Cik reizes mums vajadzētu pārtraukt pirms apstāšanās? (0 bez apstāšanās) int j = 0; // Cilpas skaitītājs atkārtojumam

// Inicializēt krāsu mainīgos

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

// Iestatiet LED izejas

void setup () {pinMode (redPin, OUTPUT); // uzstāda tapas kā izejas pinMode (grnPin, OUTPUT); pinMode (bluPin, OUTPUT);

if (DEBUG) {// Ja mēs vēlamies redzēt atkļūdošanas vērtības…

Sērijas sākums (9600); //… iestatīt sērijas izvadi}}

// Galvenā programma: uzskaitiet krustošanās secību

void loop () {crossFade (sarkans); crossFade (zaļš); crossFade (zils); crossFade (dzeltens);

ja (atkārtot) {// Vai mēs cilpojam ierobežotu skaitu reižu?

j += 1; ja (j> = atkārtot) {// Vai mēs jau esam tur? izeja (j); // Ja tā, tad apstājies. }}}

/* Zemāk šī līnija ir matemātika - jums tas nebūtu jāmaina uz pamatiem

* * Programma darbojas šādi: * Iedomājieties krustošanos, kas pārceļ sarkano gaismas diodi no 0-10, * zaļo no 0-5 un zilo no 10 līdz 7, veicot * desmit soļus. * Mēs vēlamies saskaitīt 10 soļus un palielināt vai * samazināt krāsu vērtības vienmērīgi. * Iedomājieties, ka + norāda vērtības paaugstināšanu par 1, bet a - * ir vienāda ar tās pazemināšanu. Mūsu 10 soļu izbalēšana izskatītos šādi: * * 1 2 3 4 5 6 7 8 9 10 * R + + + + + + + + + + + + * G + + + + + * B - - - * * Sarkanais paceļas no plkst. No 0 līdz 10 desmit soļos, zaļā krāsā no * 0-5 ar 5 soļiem un zilā krāsā no 10 līdz 7 trīs soļos. * * Reālajā programmā krāsu procenti tiek pārvērsti par * 0-255 vērtībām, un ir 1020 soļi (255 * 4). * * Lai noskaidrotu, cik lielam solim vajadzētu būt starp vienu augšup vai lejup vērstu atzīmi no vienas no LED vērtībām, mēs saucam calcStep (), *, kas aprēķina absolūto atstarpi starp sākuma un beigu vērtībām, * un pēc tam sadala šo atstarpi ar 1020, lai noteiktu soli * starp vērtības korekcijām. */

int calcStep (int prevValue, int endValue) {

int solis = endValue - prevValue; // Kāda vispār ir plaisa? if (solis) {// Ja tā nav nulle, solis = 1020/solis; // dalīt ar 1020} atgriešanās solis; }

/* Nākamā funkcija ir calcVal. Kad cilpas vērtība, i, * sasniedz soli, kas piemērots kādai no * krāsām, palielina vai samazina šīs krāsas vērtību par 1. * (R, G un B tiek aprēķināti atsevišķi.) */

int calcVal (int solis, int val, int i) {

if ((solis) && i % solis == 0) {// Ja solis nav nulle un ir pienācis laiks mainīt vērtību, if (solis> 0) {// vērtības palielināšana, ja solis ir pozitīvs… val += 1; } cits if (255. solis) {val = 255; } cits, ja (val <0) {val = 0; } atgriešanās val; }

/* crossFade () pārvērš procentuālās krāsas uz a

* Diapazons 0-255, pēc tam cilpas 1020 reizes, pārbaudot, vai * vērtība ir jāatjaunina katru reizi, pēc tam ierakstot * krāsu vērtības pareizajās tapās. */

void crossFade (int krāsa [3]) {

// Pārvērst par 0-255 int R = (krāsa [0] * 255) / 100; int G = (krāsa [1] * 255) / 100; int B = (krāsa [2] * 255) / 100;

int stepR = aprēķinātStep (prevR, R);

int stepG = aprēķinātStep (prevG, G); int solisB = aprēķinātStep (prevB, B);

par (int i = 0; i <= 1020; i ++) {redVal = calcVal (stepR, redVal, i); grnVal = aprēķinātVal (solisG, grnVal, i); bluVal = aprēķinātVal (solisB, bluVal, i);

analogWrite (redPin, redVal); // Ierakstiet pašreizējās vērtības LED tapās

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

aizkavēties (gaidīt); // Pirms cilpas atsākšanas pauzējiet uz “gaidīšanas” milisekundēm

if (DEBUG) {// Ja mēs vēlamies sērijveida izvadi, izdrukājiet to

if (i == 0 vai i % loopCount == 0) {// sākums, un katra loopCount reizes Serial.print ("Loop/RGB: #"); Sērijas nospiedums (i); Serial.print ("|"); Serial.print (redVal); Serial.print (" /"); Serial.print (grnVal); Serial.print (" /"); Serial.println (bluVal); } DEBUG += 1; }} // Atjaunināt pašreizējās vērtības nākamajai cilpai prevR = redVal; prevG = grnVal; prevB = bluVal; kavēšanās (aizturēšana); // Pauze, lai pēc izvēles atjaunotu cikla gaidīšanas milisekundes}

2. solis: koka iesaiņošana

Aptinot koku
Aptinot koku
Aptinot koku
Aptinot koku
Aptinot koku
Aptinot koku
Aptinot koku
Aptinot koku

Es izmantoju ūdensnecaurlaidīgas sloksnes, jo tās būs ārā. Viņi palika paši, bet es ātri sekoju vadu saitēm, lai pārliecinātos, ka tie paliek. Vienkārša un viegla uzlaušana. Sloksnes caurplūdes spēja atvieglo barošanas avota ievadīšanu apakšā un strāvas padevi no augšas līdz zvaigznei.

3. solis: neaizmirstiet zvaigzni virsū

Neaizmirstiet zvaigzni virsū
Neaizmirstiet zvaigzni virsū
Neaizmirstiet zvaigzni virsū
Neaizmirstiet zvaigzni virsū
Neaizmirstiet zvaigzni virsū
Neaizmirstiet zvaigzni virsū
Neaizmirstiet zvaigzni virsū
Neaizmirstiet zvaigzni virsū

Zvaigznei es izmantoju 10W mikroshēmu pāri, lai pievērstu uzmanību. Es pielodēju tos pie vara loksnes kā radiatoru. Es varēju izmantot vairāk sloksnes, jo nedaudz palika pāri.

4. darbība. Izmēģiniet to

Image
Image

Pirmajā mēģinājumā ātrums bija pārāk ātrs …

Kad es to nomierināju, tas izskatījās diezgan labi.

Ieteicams: