LEKCE TIMER - Casovac ms s 3 LED - oprava

 avatar
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...