Lekce 1
Řízení LED tlačítkem

Úvod

V tomto základním příkladu si ukážeme, jak zapnout/vypnout vestavěnou LED na modulu Arduino pomocí vstupního digitálního portu a tlačítka. Využijeme vstupní digitální pin, na kterém přečteme stav spínače, který má jen dva stavy – sepnutý nebo vypnutý. Pro rozsvícení LED naopak využijeme výstupní digitální pin. Vzhledem k tomu, že deska Arduino je vybavena vestavěnou LED, která je připojena k pinu 13, můžeme tuto LED rovnou použít, aniž bychom museli připojovat LED externě.

Použité komponenty

  • modul Arduino
  • USB kabel
  • tlačítko
  • rezistor (10 kΩ)
  • nepájivé pole
  • vodiče pro nepájivé pole

Princip

Tlačítka jsou běžnou součástí a slouží k ovládání elektronických zařízení. Jsou obvykle používána jako spínače nebo dokonce jako přepínače. Tlačítka se vyrábí v různých tvarech a velikostech, avšak zde jsme použili 12 mm tlačítko. U těchto spínačů je třeba si dát pozor, protože mají sice čtyři piny, ale vždy dva jsou propojené. Piny, na které ukazují šipky stejné barvy (viz obrázek), jsou propojeny. Při stisknutí tlačítka se piny, na které ukazují modré šipky, připojí na piny označené červenou šipkou.

zapojeni tlacitka

Obecně by stačilo tlačítko přímo připojit na vstupní digitální pin a s jeho pomocí připojovat požadovanou napěťovou úroveň. To by bylo relativně jednoduché. Problém je v takovém případě s napěťovými hladinami. Musíme si uvědomit, že pro digitální vstupní úroveň LOW musí být napětí na vstupu menší než 0,5 V, pro vstupní úroveň HIGH naopak vyšší než 2,5 V. Pokud tyto úrovně vstupu nějak „nevnutíme“, může se volný vstupní pin chovat různě – například se mohou projevit různé typy rušení. Aby se zabránilo těmto vnějším zásahům, které by negativně ovlivňovaly vstupní signál, je v našem zapojení použit tzv. pull-down rezistor cca 1 k–10 kΩ, který je zapojen mezi tlačítkem, vstupním pinem a zemí (GND). Díky tomuto zapojení je vstup buď přes rezistor připojen k zemi (napětí odpovídá úrovni LOW), nebo po stisknutí tlačítka k napájecímu napětí +5 V (úroveň HIGH). Připojený rezistor zároveň zabraňuje zkratu mezi póly +5 V a GND při stisku tlačítka. Toto připojení obvodu je široce používáno v řadě obvodů a elektronických zařízení.


Postup experimentu

Krok 1: Sestavíme si obvod podle následujícího obrázku nebo schématu.

Blokové schéma

Blokove schema

Elektronické schéma

Elektronicke schema

Krok 2: V prostředí mBlock sestavíme následující program:


ikona vysvetleni Vysvětlení kódu

Základní nekonečná smyčka „opakuj stále“ opakovaně načítá stav digitálního pinu 12, ke kterému je připojeno tlačítko společně s pull-down rezistorem. Stav pinu je při nestisknutém tlačítku LOW (nízká úroveň), což též odpovídá číselné podobě 0, nebo při stisknutém tlačítku hodnotě HIGH (vysoká úroveň). Tento stav testuje blok podmínky. Je-li stav pinu větší než 0, je spínač stisknutý, následuje tedy část kódy „tak“, ve kterém se výstupní digitální pin 13 nastaví do stavu HIGH (vysoká úroveň). V opačném případě je provedena alternativní část kódu „jinak“, ve které je výstupní digitální pin 13 nastaven na úroveň LOW (nízká úroveň). Vestavěná LED modulu Arduino, která je připojena přímo na pin 13 se rozsvěcí/zhasíná dle zadané výstupní úrovně.


Krok 3: Zkompilujeme kód a nahrajeme do modulu Arduino tlačítkem tlacitko nahrat.

Krok 4: Nyní stiskneme tlačítko a vestavěná LED na modulu Arduino se rozsvítí. Po uvolnění tlačítka LED opět zhasne.

Pohled na experiment

Poznámka:
Výše uvedený kód je sestavený jen ze standardních příkazů prostředí mBlock. Bohužel toto standardní prostředí moc nemá vyřešenou práci se vstupními úrovněmi digitálních vstupů. Proto je načtená úroveň digitálního vstupu 12 testována na úroveň HIGH (vysoká úroveň) pomocí nerovnosti „větší než nula“. Pokud bychom chtěli použít korektnější testování, tedy skutečně testovat logickou úroveň HIGH, musíme využít rozšíření MAXI Starter kit. Jak vidíme, lze program řešit i bez něj, ale nyní ukážeme možnosti, které nám toto rozšíření přináší.


Využití hodnoty HIGH (vysoká úroveň)

Hned v první kategorii příkazů nazvané „Nastavení pinů“ je blok blok vysoka uroven, který odpovídá vysoké logické vstupní úrovni, kterou nyní můžeme testovat v podmínce jako rovnost. Předchozí kód tedy upravíme podle následujícího obrázku. Funkčnost kódu je naprosto stejná, ale testování digitálního vstupu 12 je mnohem korektnější.


Využití PULLUP nastavení digitálního pinu

Rozšíření pro MAXI Starter kit nám ale otevírá i další možnost, jak realizovat načítání stisknutého tlačítka. Jak jsme si říkali v seznámení s modulem Arduino, je možné nastavit digitální vstup tak, že vstup je „držen“ interním pull-up rezistorem na hodnotě +5 V (odpovídá úrovni HIGH). Je to vlastně dost podobné tomu, jak jsme pomocí externího pull-down rezistoru drželi stav pinu na úrovni LOW.

Pro nastavení a čtení digitálního pinu s připojeným interním pull-up rezistorem slouží následující programový blok:

blok pull-up

Díky tomuto řešení s interním pull-up rezistorem modulu Arduino je možné v zapojení zcela vynechat zapojený rezistor a přes tlačítko propojit digitální pin k zemnění (GND). Zapojení tlačítka a modulu Arduino lze tedy výrazně zjednodušit, jak vidíme na následujícím obrázku a schématu.

Blokové schéma

Blokove schema - ver. 2

Elektronické schéma

Elektronicke schema - ver. 2

Pochopitelně je třeba upravit i programový kód. Vidíme však, že se od předešlých kódů zase tak moc nezměnil. Jedinou změnou jsou programové bloky v argumentu rozhodující podmínky.


Jak vidíme, opět došlo jen k nepatrné změně původního kódu. V základním principu se kód vůbec nezměnil, jen jsme změnili způsob nastavení vstupního digitálního pinu a jeho načítání. Kód je ale korektnější a elektronická část celého zapojení jednodušší, a to při zachování stejné funkčnosti. To vše má na svědomí použití rozšíření MAXI Starter kit!

Pohled na experiment


Tak co… Ještě nás to nepřesvědčilo o tom, že se docela vyplatí přidat rozšíření MAXI Starter kit do prostředí mBlock? Ne? To nevadí! Snad to přijde později.