// připravené proměné pro uložení času
// kdy byly jednotlivé bloky v programu vykonány
// jsou tu 3, Vy můžete nastavit kolik chcete
long lastJob1, lastJob2 = 0, lastJob3 = 0;
int LED1 = 9;
int LED2 = 10;
int LED3 = 11;
void setup() {
pinMode( 9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
}
void loop() {
// když celkový počet milisekund od startu Arduina
// je větší jak poslední uložená hodnota, kdy byla část
// programu vykonána s přičtením intervalu 1000ms
if (millis() > (1000 + lastJob1))
{
// zde bude kód programu, který se v mém případě
// vykoná každou 1 vteřinu (1000 ms)
// když je digitální pin 0 tak na něj zapiš 1
if (digitalRead(LED1) == 0) digitalWrite(LED1, HIGH);
// jinak zapiš 0
else digitalWrite(LED1, LOW);
// toto je důležité, musíme uložit čas
// kdy byla vykonána tato část programu
lastJob1 = millis();
}
// tyto další části programu jsou stejné
// v předchozím případě pouze s jiným intervalem
// část programu, která se vykoná každé 2 sekundy
if (millis() > (3000 + lastJob2))
{
if (digitalRead(LED2) == 0) digitalWrite(LED2, HIGH);
else digitalWrite(LED2, LOW);
lastJob2 = millis();
}
// část programu, která se vykoná každé 3 sekundy
if (millis() > (5000 + lastJob3))
{
if (digitalRead(LED3) == 0) digitalWrite(LED3, HIGH);
else digitalWrite(LED3, LOW);
lastJob3 = millis();
}
// zde napišeme část programu, která se bude vykonávat bez ohledu
// na čas vždy, kdy k němu program dojde ve cyklu loop()
// ja jsem si to otestoval a sem se program dostane
// každých 1,136 ms
}