Traffic Lights Controlled by Arduino

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

Motivácia

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!

Ciele

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

Postup

Krok #1: 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 1.1

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.
Obr. 1: Schéma zapojenia semafora pre nočný režim režim

Úloha 1.2

Vo funkcii setup() inicializujte PIN č. 3 na výstupný.
Poznámka:  Nezabudnite, že používanie globálnych premenných nevedie k dobrým návykom. Ak si teda budete chcieť PIN č. 3 pomenovať, použite na to makro.

Úloha 1.3

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 1.4

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ť.
Upozornenie:  V prípade, že sa vám nepodarí program preniesť do Arduina, skontrolujte si, či máte nastavený správny port a zvolený správny typ dosky.

Krok #2: 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 2.1

K oranžovej LED dióde zapojte podobným spôsobom aj zelenú (PIN č. 4) a červenú (PIN č. 5) LED diódu.
Obr. 2: Schéma zapojenia semafora pre denný režim

Úloha 2.2

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

Úloha 2.3

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 2.4

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.

Krok #3: 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.

Úloha 3.1

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.
Obr. 3: Schéma zapojenia semafora pre spolu s tlačidlom pre prepínanie režimov
Poznámka:  Pri zapájaní nezabudnite na to, že ak na PIN nie je privedené žiadne napätie (tlačidlo nie je stlačené), neznamená to automaticky, že sa na ňom nachádza 0V! Zvážte preto použitie Pull-UP alebo Pull-Down rezistorov.

Úloha 3.2

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.

Poznámka:  Túto úlohu vyriešte bez použitia globálnych premenných!

Úloha 3.3

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.

Doplnkové ú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.

Diskusia

Upozornenie: Do svojich príspevkov nevkladajte správne riešenia úloh a ani ich od ostatných nežiadajte! Nepoužívajte sprosté slová! Takéto príspevky budú zmazané! Riaďte sa podľa pravidiel etického kódexu.