Traffic Lights Controlled by Arduino

o diódach, rezistoroch, tlačidlách a základoch programovania pre Arduino

Objectives

  • Osvojiť si základy práce prototypovacou doskou Arduino.
  • Osvojiť si základy práce s elektronikou.
  • Porozumieť významu Pull-Up a Pull-Down rezistorov.

About

Na tomto cvičení vyrobíme a naprogramujeme bežný semafor, ktorým sa riadi premávka na križovatkách. Aby to však nebolo až také jednoduché, semafor bude pracovať v dvoch režimoch - v nočnom, kedy bude svietiť len oranžové svetlo, a v dennom, kedy budú svietiť všetky tri farby. K prepnutiu režimu dôjde vtedy, keď obsluha stlačí príslušné tlačidlo. Poďme na to!

Postup

Traffic Lights - The Night Mode

Začneme zľahka rozblikaním jednej oranžovej LED diódy. Blikanie oranžového svetla bude práve reprezentovať nočný režim semaforu.

Úloha

Cez rezistor pripojte na pin č. 3 oranžovú LED diódu.

Pri zapájaní si dajte pozor na správnu polaritu diódy a taktiež nezabudnite na umiestnenie odporu pred samotnú diódu.

Schéma zapojenia semafora pre nočný režim režim

Úloha

Vo funkcii setup() inicializujte PIN č. 3 na výstupný.

Úloha

Vytvorte funkciu night_mode(), po zavolaní ktorej dôjde k spusteniu nočného režimu.

Funkcia bude reprezentovať jeden cyklus nočného režimu - na 1 sekundu sa svetlo rozsvieti a následne na 1 sekundu svetlo zhasne. Jej volanie následne umiestnite do funkcie loop() sketch-u.

Táto funkcia nebude mať žiadne parametre, ani nebude vracať žiadnu hodnotu.

Úloha

Overte vaše vytvorené riešenie.

Pokiaľ ste postupovali správne, po nahratí programu do Arduina sa bude oranžová dióda v sekundových intervaloch rozsvecovať a zhasínať.

Traffic Lights - The Day Mode

Keďže úlohou semaforov je usmerňovať premávku pomocou všetkých troch farieb, v tomto kroku sa sústredíme práve na vyriešenie tohto problému.

Úloha

K oranžovej LED dióde zapojte podobným spôsobom aj zelenú (PIN č. 4) a červenú (PIN č. 5) LED diódu.

Schéma zapojenia semafora pre denný režim

Úloha

Inicializujte PIN-y č. 4 a 5 vo funkcii setup().

Úloha

Vytvorte funkciu day_mode(), po zavolaní ktorej sa semafor prepne do denného režimu.

Funkcia bude reprezentovať jeden cyklus denného režimu. Ten sa bude správať nasledovne:

  • Po zapnutí, resp. zavolaní funkcie (v čase 0 sekúnd) bude na semafore svietiť len červená LED dióda.
  • V čase 5 sekúnd začne okrem červenej LED diódy svietiť aj oranžová.
  • V čase 7 sekúnd začne svietiť len zelená LED dióda.
  • V čase 12 sekúnd začne svietiť len oranžová LED dióda.
  • V čase 14 sekúnd sa ukončí cyklus denného režimu zhasnutím oranžovej LED diódy.

Funkcia nemá žiadne vstupné parametre a taktiež nevracia žiadnu hodnotu.

Úloha

Overte vami vytvorené riešenie.

Vytvorenú funkciu zavolajte zvnútra funkcie loop(). Pokiaľ ste postupovali správne, semafor začne pracovať v dennom režime.

The Magic Button

Za normálnych okolností by sme zmenu nočného režimu na denný a opačne riešili buď časovačom alebo svetelným senzorom. V našom prípade si však vystačíme s jedným tlačidlom.

Na PIN č. 2 pripojte tlačidlo, po stlačení ktorého sa na tomto PIN-e bude dať odčítať napätie reprezentujúce úroveň logickej jednotky.

Schéma zapojenia semafora pre spolu s tlačidlom pre prepínanie režimov

Úloha

Vo funkcii loop() implementujte kód, pomocou ktorého budete vedieť prepnúť režim pracovania semaforu z denného na nočný a opačne.

Vzhľadom na aktuálnu implementáciu bude možné prepnúť režim práce semaforu až po ukončení jeho aktuálneho pracovného cyklu. Čo je však dôležité - po zmene pracovného cyklu sa tento cyklus musí neustále opakovať, až pokiaľ nestlačíte tlačidlo znova.

Úloha

Overte správnosť svojej implementácie.

Pokiaľ ste postupovali správne, stlačením tlačidla dôjde k prepnutiu režimu práce semafora z nočného na denný alebo opačne. Čo je však dôležité, semafor bude v uvedenom režime pracovať aj vtedy, keď sa zvolený cyklus skončí a spustí sa znova.

Ďalšie úlohy

  1. Aktuálne ste vytvorili semafor, ktorý riadi premávku áut. Rozšírte teda svoje riešenie o semafor pre chodcov, ktorý bude bude synchronizovaný s vašim semaforom pre autá.

  2. Pokúste sa upraviť svoje riešenie tak, aby bolo možné z jedného režimu do druhého prejsť stlačením tlačidla kedykoľvek - aj počas práve prebiehajúceho cyklu.

Ďalšie zdroje