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ě.
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.
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í.
Krok 1: Sestavíme si obvod podle následujícího obrázku nebo schématu.
Blokové schéma
Elektronické schéma
Krok 2: V prostředí mBlock sestavíme následující program:
Program lze stáhnout z:
http://
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 .
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.
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áší.Hned v první kategorii příkazů nazvané „Nastavení pinů“ je blok , 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ší.
Program lze stáhnout z:
http://
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:
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
Elektronické schéma
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.
Program lze stáhnout z:
http://
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
!
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.