Jakmile se kě mě dostal modul ARDUINO měl jsem chuť osadit jej do zkušební desky a začít se učit jak jej používat a co vše s jeho možností lze sestrojit. Jako první jsem si ale zapojil všech dvanáct digitálních výstupů a pokusil jsem se je použít pro rozsvícení světelné led diody. Posbíral jsem tedy součástky a začal jsem je vkládat do zkušebního pole.
Zapojení je velice primitivní a spočívá vlastně jen v tom, umístit na zkušební desku dvanáct led diod s odpory a spojit každou diodu z jedním digitálním výstupem.
Pak je již na řadě samotné naprogramování postupného rozsvěcení led diod. Pro účel testu jsem si vytvořil počítadlo, do kterého jsem postupně přidával či odebíral kroky. Každý krok tak vždy patřil jednomu digitálnímu výstupu a to je celé. V konečném efektu vznikne běžící světlo, které se posunuje od první do dvanácté led diody a zase zpět. Tím vytvoří efekt známý z filmu Knight Rider z osmdesátých let.
Celý kód je velmi jednoduchý a skládá se vlastně jen z pár podmínek.
/*
Ijacek.007
Blog.ijacek007.cz
*/
int led1 = 13;
int led2 = 12;
int led3 = 11;
int led4 = 10;
int led5 = 9;
int led6 = 8;
int led7 = 7;
int led8 = 6;
int led9 = 5;
int led10 = 4;
int led11 = 3;
int led12 = 2;
int krok = 0;
int nahoru=1;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(led9, OUTPUT);
pinMode(led10, OUTPUT);
pinMode(led11, OUTPUT);
pinMode(led12, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop(){
if (nahoru==1){
krok=krok + 1;
}else{
krok=krok-1;
}
delay(100);
if (krok ==1 ) { digitalWrite(led1, HIGH); }else{ digitalWrite(led1, LOW); }
if (krok ==2 ) { digitalWrite(led2, HIGH); }else{ digitalWrite(led2, LOW); }
if (krok ==3 ) { digitalWrite(led3, HIGH); }else{ digitalWrite(led3, LOW); }
if (krok ==4 ) { digitalWrite(led4, HIGH); }else{ digitalWrite(led4, LOW); }
if (krok ==5 ) { digitalWrite(led5, HIGH); }else{ digitalWrite(led5, LOW); }
if (krok ==6 ) { digitalWrite(led6, HIGH); }else{ digitalWrite(led6, LOW); }
if (krok == 7) { digitalWrite(led7, HIGH); }else{ digitalWrite(led7, LOW); }
if (krok == 8) { digitalWrite(led8, HIGH); }else{ digitalWrite(led8, LOW); }
if (krok == 9) { digitalWrite(led9, HIGH); }else{ digitalWrite(led9, LOW); }
if (krok == 10) { digitalWrite(led10, HIGH); }else{ digitalWrite(led10, LOW);}
if (krok == 11) { digitalWrite(led11, HIGH); }else{ digitalWrite(led11, LOW);}
if (krok == 12) { digitalWrite(led12, HIGH); }else{ digitalWrite(led12, LOW);}
if (krok==12){
nahoru=0;
}
if (krok ==1)
{
nahoru =1;
}
}
Máme 12 výstupů, a proto 12 kroků, kdy každý krok je určen jedné led diodě. Kroky se první začnou přičítat a tím se postupně bude rozsvěcet led, která je závislá, právě na konkrétním kroku. Jakmile dojdeme ke kroku 12, což je poslední dioda, řekneme programu že má místo přičítání, kroky odčítat. Proměnné nahoru nastavíme hodnotu 0 a tím kroky začneme odčítat. Led diody začnou rozsvěcet v opačném pořadí. Jakmile dosáhneme kroku 1 opět nastavíme proměnou nahoru na 1 a tím se zase začnou kroky přičítat. Tak to jde vlastně pořád dokola.
Na videu si můžete prohlédnout, jak to celé vypadá. Nejprve je vidět zapnutí modulu, kdy se pouze program načte. Jakmile je však nahrán program, světlo se již chová přesně tak jak jsem Vám popsal.
Soubory ke stažení
deravej_kotel
2014-02-02 12:54:47Ten zdroják to je děs :D Nee jako fakt, vždyť by to šlo napsat jednim cyklem for :) a jednotlivé porty ledek narvat do pole, než vytvářet tunu intů
Ijacek.007
2014-02-02 22:08:23jj však to taky není nijak optimalizovány prostě je to jednoduchý kód. Všechno se dá udělat lepe ale pro ukázku fungování to bohatě stačí.
Stanislav
2016-04-04 10:03:44Dobrý den, bylo by možné naprogramovat arduino tak. aby led se postupně rozsvěcovaly a až se rozsvítí celá řada aby zhasly a opět se postupně rozsvěcovali a to v rychlejším sledu ( blinkr). Děkuji
Vložit komentář
* - vyžadované údaje. RSS kanál s komentáři