Stroboskopinis ir dimerinis mirksiukas 2015.10.28 at 10:58
Toks trumpas straipsniukas, atsiradęs dėl to, kad kolega užsimanė pamirksinti LEDus taip, kaip mirksi specialiųjų tarnybų stroboskopiniai mirksiukai (tipo police strobe). Pats greičiausias būdas – jamam Arduino Uno ir nesunkiai parašom tokią programėlę. Berašydamas, kaip visada sugalvojau patobulinti galutinį variantą ir finale turim ir stroboskopinį ir dimeruojantį variantą. Programėlė:
// Kintamieji: int x = 0; const int mirksejimo_kiekis = 10; const int mirksejimo_trukme = 20; const int laikas_tarp_pusiu = 150; int sviesumas = 0; int pokytis = 1; // Isejimo pinai: const int raudonas_led = 9; const int melynas_led = 10; // Iejimu pinai: const int mygtukas = A0; // Programa, keisti reiktu tik virsuje void setup() { pinMode(raudonas_led, OUTPUT); pinMode(melynas_led, OUTPUT); pinMode(mygtukas, INPUT); } void loop() { if (digitalRead(mygtukas) == HIGH) { mirksejimas(); } else { dimeris(); } } //-------------------- Mirksejimo programele ------------------------ int mirksejimas() { for (x = 0; x <= mirksejimo_kiekis; x++) { analogWrite(raudonas_led, HIGH); delay(mirksejimo_trukme); analogWrite(raudonas_led, LOW); delay(mirksejimo_trukme); } delay (laikas_tarp_pusiu); for (x = 0; x <= mirksejimo_kiekis; x++) { analogWrite(melynas_led, HIGH); delay(mirksejimo_trukme); analogWrite(melynas_led, LOW); delay(mirksejimo_trukme); } delay (laikas_tarp_pusiu); } //-------------------- Dimeriavimo programele ------------------------ int dimeris() { analogWrite(raudonas_led, sviesumas); analogWrite(melynas_led, -sviesumas); sviesumas = sviesumas + pokytis; if (sviesumas == 0 || sviesumas == 255) { pokytis = -pokytis ; } delay(2); }
Viskas čia paprasta, plius įdėjau ir keletą komentarų, bet visgi jei bus klausimų – prašom, komentaruose bandysiu atsakyti. Mėlynas ir raudonas 1W galios LEDai jau važiuoja, taigi, ne už ilgo turėtų būti ir veikimo video :).
2015.11.03
štai ir video… Nors stroboskopo efektas nelabai gražiai įsirašė:
Leave a Reply