09.D Arduino – úplné základy: Blikanie diódy – START / STOP tlačidlom (stavový program)
Cieľom tejto lekcie je:
- naučiť sa ovládať blikanie diódy tlačidlom,
- pochopiť pojem stav programu,
- vytvoriť START / STOP multivibrátor,
- naučiť sa rozlíšiť stlačenie a držanie tlačidla.
Čo znamená „stavový program“
Stavový program:
- pamätá si, v akom stave sa nachádza,
- nereaguje len na okamžitú hodnotu vstupu,
- ale na zmenu stavu (napr. stlačenie tlačidla).
V našom prípade budeme mať dva stavy:
- STOP – dióda nebliká,
- START – dióda bliká.
Použité súčiastky a porty
- dióda (LED) + rezistor 220–330 Ω
- tlačidlo
- Arduino Uno / Mega
Použité porty:
- D12 – dióda (výstup)
- D2 – tlačidlo (vstup, INPUT_PULLUP)
Zapojenie (reálne Arduino)



Zapojenie:
- D12 → rezistor → anóda LED
- katóda LED → GND
- tlačidlo: jedna noha → GND, druhá → D2
Myšlienka riešenia (veľmi dôležité)
- tlačidlo nebliká,
- tlačidlo iba zapína alebo vypína blikanie,
- blikanie riadi premenná (stav).
Použijeme premennú:
bool blinking = false;
false→ STOP (nebliká)true→ START (bliká)
Program: START / STOP blikanie diódy
bool blinking = false; // stav blikania
bool lastButton = HIGH; // predchádzajúci stav tlačidla
void setup() {
pinMode(12, OUTPUT); // dióda
pinMode(2, INPUT_PULLUP); // tlačidlo
}
void loop() {
bool button = digitalRead(2);
// detekcia stlačenia tlačidla
if (lastButton == HIGH && button == LOW) {
blinking = !blinking; // prepnutie START / STOP
delay(200); // jednoduchý debounce
}
lastButton = button;
if (blinking) {
digitalWrite(12, HIGH);
delay(500);
digitalWrite(12, LOW);
delay(500);
} else {
digitalWrite(12, LOW); // STOP = dióda zhasnutá
}
}
Čo máš vidieť
- po prvom stlačení tlačidla sa dióda rozbliká,
- po druhom stlačení sa blikanie zastaví,
- tlačidlo sa môže pustiť – stav zostane zachovaný.
➡️ Toto je skutočný stavový program.
Vysvetlenie kľúčových častí
Premenná blinking
- pamätá si stav programu,
- je nezávislá od tlačidla.
lastButton
- slúži na zistenie zmeny stavu,
- zabraňuje tomu, aby program reagoval na držanie tlačidla.
blinking = !blinking;
- prepne:
false → truetrue → false
Tinkercad – rovnaké riešenie


V Tinkercade:
- použi Arduino Uno,
- zapoj LED a tlačidlo rovnako ako v reále,
- vlož ten istý program,
- spusti Start Simulation.
Správanie musí byť identické.
Najčastejšie chyby študentov
- chýbajúca premenná
lastButton, - použitie
INPUTnamiestoINPUT_PULLUP, - očakávanie, že tlačidlo musí byť držané,
- zabudnutý rezistor pri dióde.
Úlohy pre študentov
Úloha 1 (ľahká)
Zmeň rýchlosť blikania na 200 ms.
Úloha 2 (stredná)
Použi iný port pre diódu (napr. 11).
Úloha 3 (výzva)
Pridaj druhú diódu:
- jedna svieti pri START,
- druhá pri STOP.
Poznámka
Toto je zlomová lekcia:
- študenti prestávajú myslieť „riadok po riadku“,
- začínajú chápať logiku programu,
- vytvára sa základ pre automaty, regulátory a maturitné úlohy.
Odporúčanie:
- nechať študentov najprv program len pozorovať,
- až potom kresliť stavový diagram (START / STOP).
Čo bude nasledovať
V ďalšej lekcii:
- odstránime
delay()a použijeme millis(), - vytvoríme profesionálny multivibrátor,
- pripravíme riešenie priamo na maturitnú úroveň.


