21. Semafór
Podklady poslal Martin na cvičení.

Cieľom cvičenia je zostrojiť a naprogramovať jednoduchý semafór, ktorý postupne rozsvieti zelenú, žltú a červenú LED v pevne definovanom poradí a časových intervaloch.
Žiak sa naučí:
- pracovať s digitálnymi výstupmi Arduino,
- ovládať LED diódy pomocou funkcie
digitalWrite(), - používať časové oneskorenie
delay(), - pochopiť princíp sekvenčného riadenia výstupov.
🧠 Princíp činnosti semaforu
Semafór pracuje v nekonečnej slučke:
- rozsvieti sa zelená LED,
- po uplynutí času zhasne,
- rozsvieti sa žltá LED,
- po uplynutí času zhasne,
- rozsvieti sa červená LED,
- po uplynutí času zhasne,
- cyklus sa opakuje od začiatku.
Každá LED svieti 1 sekundu.
🧰 Použité súčiastky
- Arduino UNO
- 3× LED dióda:
- zelená
- žltá
- červená
- 3× rezistor 220–330 Ω
- Breadboard
- Prepojovacie vodiče
🔌 Zapojenie obvodu
Zapojenie LED diód
| LED | Arduino UNO |
|---|---|
| Zelená LED (anóda) | pin 8 cez rezistor |
| Žltá LED (anóda) | pin 10 cez rezistor |
| Červená LED (anóda) | pin 12 cez rezistor |
| Katódy LED | GND |
👉 Rezistor musí byť zapojený vždy v sérii s LED.
🧩 Schéma zapojenia (textová)
Arduino UNO Breadboard
----------- -----------
D8 --> [220Ω] --> |>| (Zelená LED) --> GND
D10 --> [220Ω] --> |>| (Žltá LED) --> GND
D12 --> [220Ω] --> |>| (Červená LED)-> GND
💻 Program – semafór
// Arduino - Semafór (bežiace svetlo sprava doľava)
// Každá LED svieti 1 sekundu
byte pinLedZelena = 8; // Pravá strana
byte pinLedZlta = 10; // Stred
byte pinLedCervena = 12; // Ľavá strana
void setup()
{
pinMode(pinLedZelena, OUTPUT);
pinMode(pinLedZlta, OUTPUT);
pinMode(pinLedCervena, OUTPUT);
}
void loop()
{
// 1. Zelená
digitalWrite(pinLedZelena, HIGH);
delay(1000);
digitalWrite(pinLedZelena, LOW);
// 2. Žltá
digitalWrite(pinLedZlta, HIGH);
delay(1000);
digitalWrite(pinLedZlta, LOW);
// 3. Červená
digitalWrite(pinLedCervena, HIGH);
delay(1000);
digitalWrite(pinLedCervena, LOW);
// Po červenej sa cyklus opakuje
}
🧪 Overenie funkcie
Po nahratí programu:
- Zelená LED sa rozsvieti na 1 sekundu.
- Potom sa rozsvieti žltá LED.
- Následne červená LED.
- Sekvencia sa opakuje do nekonečna.
🧠 Dôležitá myšlienka
Arduino vykonáva príkazy presne v poradí, v akom sú zapísané v programe.
⭐ Rozšírenie (pre rýchlejších žiakov)
- Zmeň čas svietenia jednotlivých farieb.
- Pridaj pauzu medzi cyklami.
- Pridaj chodcovský semafór (ďalšia LED).
- Skús zapísať semafór pomocou premenných pre čas.
- Diskusia: prečo by
delay()nebol vhodný v zložitejších systémoch?
❓ Kontrolné otázky
- Aký je rozdiel medzi
pinMode()adigitalWrite()? - Prečo je potrebný rezistor pri LED?
- Čo sa stane, ak zmeníme poradie LED v programe?
🔗 Prepojenie na prax
Podobný princíp riadenia sekvencií sa používa:
- v semaforoch,
- v priemyselných automatoch,
- v riadiacich systémoch a PLC,
- v embedded systémoch.


