int naSobe = 5;
bool resetTriggered = false;
int ledPin[] = {3, 4, 5, 6, 7, 8};
int totalLed = 6;
void setup() {
for (int i = 0; i < totalLed; i++) {//nastaví piny pro LED jako výstupy
pinMode(ledPin[i], OUTPUT); //"i" je index v seznamu
}
pinMode(2, INPUT);
attachInterrupt(digitalPinToInterrupt(2), [] {resetTriggered = true; naSobe = 5;}, RISING); //lambda aby jsme usetřili řádky v kódu
}
void loop() {
if (resetTriggered) { //když stisknu tlačítko, všechno zhasne
for (int i = 0; i < totalLed; i++) {
digitalWrite(ledPin[i], LOW);
}
resetTriggered = false;
}
if (naSobe >= 0) { // pokud je na pinu ještě místo pro sníh
for (int i = 0; i <= naSobe; i++) {
if (resetTriggered) { //konec loopu při stisku tlačítka
return;
}
digitalWrite(ledPin[i], HIGH);
delay(300);
if (i < naSobe) { //vypne předchozí LED, aby vločka "letěla"
digitalWrite(ledPin[i], LOW);
}
}
naSobe--; //posune hranici sněhu o jednu LED níž
}
}