LEKCE TIMER - Casovac ms s 3 LED - oprava
Pavel1TU
c_cpp
2 years ago
2.2 kB
4
Indexable
// Casovac milis - 3 LED se postupne rozsviti po urcitem casovem intervalu // 1 - s LED1 // // UKOL1 - doplnit LED2 s intervalem1, nebo s intervalem2, az po rozsviceni LED1 // pokud funguje // UKOL2 - doplnit LED3 s intervalem3, az po rozsviceni LED1 // pokud funguje // doplnit RESET vsech LED s intervalem0 // prirazeni LED k vystupum, můžete zmenit // vyhoda teto definice - na zacatku programu pri zmene vstutu/vystupu // zmenite jen zde #define LED1 2 //LED1 na vystup 2 #define LED2 3 //LED2 na vystup 3 #define LED3 4 //LED2 na vystup 4 bool LED1Stav = false; // promenna pro nastaveni LED1 se nastavi na LOW = nesviti // pouzijeme "unsigned long" pro ulozeni hodnoty interniho casovace v ms unsigned long previousMillis = 0; // predchozi ulozeny cas unsigned long currentMillis; // posledni ulozeny cas (aktualni) // promennou muzeme zmenit, pokud definujeme interval pro kazdou LED, // bude se rozsvecet kazda LED s jinym intervalem const long interval1 = 1000; // interval pro LED1 (milliseconds) // muzeme vyuzit interval pro zhasnuti vsech LED const long interval0 = 10000; // interval pro LED1 (milliseconds) void setup() { // nastaveni LED1, uz pouzivame jen nazev vystupu LED1 // co se nastavilo pomoci DEFINE pinMode(LED1, OUTPUT); } void loop() { // ulozime aktualni "current" hodnotu casovace // tento aktualni cas pak muzeme porovnavat s naposledy"previous" ulozenym casem // pomoci rozdilu techto casu docilime provedeni casti programu v urcitem intervalu unsigned long currentMillis = millis(); // test zda ubehl uz prvni interval // zaroven kontrola zda LED1 nesviti if (currentMillis - previousMillis >= interval1 && LED1Stav == false) { // pokud probehl interval1 a LED 1 nesviti, provede se nasledujici // posledni ulozeny cas se ulozi jako predchazejici previousMillis = currentMillis; // tim ze se ulozi jejich hodnota stejna ale casovac bezi dal // po vycteni aktualni"current" hodnoty casovace na zacatku LOOP // muzeme opet hlidat interval jakoby od hodnoty "0" // rozsvitime LED1 a ulozime jeji stav digitalWrite(LED1, HIGH); LED1Stav = true; } }
Editor is loading...