21. Semafór

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:

  1. rozsvieti sa zelená LED,
  2. po uplynutí času zhasne,
  3. rozsvieti sa žltá LED,
  4. po uplynutí času zhasne,
  5. rozsvieti sa červená LED,
  6. po uplynutí času zhasne,
  7. 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

LEDArduino 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 LEDGND

👉 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:

  1. Zelená LED sa rozsvieti na 1 sekundu.
  2. Potom sa rozsvieti žltá LED.
  3. Následne červená LED.
  4. 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

  1. Aký je rozdiel medzi pinMode() a digitalWrite()?
  2. Prečo je potrebný rezistor pri LED?
  3. Č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.

Pridaj komentár