LEKCE TIMER - Casovac ms s 3 LED - oprava
Pavel1TU
c_cpp
3 years ago
2.2 kB
5
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...