Doposud jsme z arduina pouze blikali LED diodami. Lze tak říci, že jsme používali piny arduina pouze pro programový výstup. Piny arduina samozřejmě můžeme použít i jako programový vstup. Co je ale myšleno slovy programový vstup?
>>Programový vstup je myšlen jako možnost lidského uživatele přímo vstupovat do činnosti programu. V našem případě například stiskem tlačítka.<<
Tlačítko samo o sobě není nijak složitý elektronický prvek. Funguje tak, že stiskem propojuje dvě části obvodu a tím (je-li program správně poskládán) aktivuje část programu v desce arduina. Jestliže tlačítko pustíme, vrátí se do původního stavu s tím, že na tento návrat může, ale také nemusí, program reagovat.
V případě desky arduina stiskem tlačítka vždy přivádíme -/GND na digitální piny desky. Tyto piny jsou samozřejmě v programu definovány jako vstup, aby deska věděla, jak k nim přistupovat. Než ale postoupíme dále a zkusíme si zapojit obvod s tlačítky je třeba si trochu popovídat o příkazech, které použijeme dále v programu. Některé z nich později probereme podrobněji.
INPUT_PULLUP
Tento příkaz nalezneme ve voidu „setup“ jako jeden z parametrů ve funkci pinMode. Znamená to, že pin ve kterém je tento příkaz použit je programovým vstupem a připojuje se na něj tlačítko.
Proměnná
Proměnná je vyhrazené místo v paměti, které má jméno. Programujeme-li arduino musíme v programu i říci, jaký typ proměnné si přejeme (jaký typ dat do něj budeme vkládat). Pro různý typ dat totiž arduino vyhrazuje různou velikost paměti. V našem programu deklaruji proměnnou, kterou jsem pojmenoval tlacitko. Klíčovým slovem int programu říkám, že obsahem proměnné bude číslo – integer a rovnou do proměnné pomocí rovnítka vkládám stav, který arduino načte na pinu 7 – čili na tlačítku. Tento stav může nabýt hodnot 1, nebo 0. Proměnná tlacitko bude mít stav „0“, pokud bude tlačítko stisknuté a 1, pokud stisknuté nebude.
Podmínkový příkaz
Podmínkové příkazy jsou soustavou příkazů, které nám umožňují upravovat chování programu v reakci na nějaký stav. Díky podmínkovému příkazu může program zareagovat na stisknutí tlačítka a provést činnost, která je požadována jak v reakci na stisk tlačítka, tak v reakci na to, když tlačítko stisknuté není.
Klíčovými slovy pro podmínkové příkazy jsou příkazy if = jestliže, else if = nebo jestli, else = nebo.
Podmínkové příkazy mají dvě části. Hlavičku (začátek a ta část co je v kulatých závorkách) – ve které se řeší co je podmínkou proto, aby se mohla provést činnost popsaná v kódu za hlavičkou a tělo (část podmínky která je vložená mezi složené závorky) podmínkového příkazu ve kterém je vloženo co se má provést, pokud je splněna podmínka. Podmínka v hlavičce je řešena porovnáváním proměnné a hodnoty v ní vložené. Pokud hodnota vložená v podmínce odpovídá stavu, který je v závorce, provede se část programu, který je zapsán v těle podmínky.
Zapojení
Zapojte si desku arduina do následující sestavy. Sběrnice na kontaktním poli by měla být propojena s GND (černé kablíky). Tlačítko by mělo být zapojené tak, aby stisknutím přivádělo GND na pin 7 na desku. Piny 2 a 3 by měly být propojené s anodou LED diody (delší vývod).
I pro toto zapojení můžeme sestavit pravdivostní tabulku.
Programový krok | Stav tlačítka | stav pinu 2 | stav pinu 3 |
Programový krok 1 | 0 – stisknuto | 0 | 1 |
Programový krok 2 | 1 – rozpojeno | 1 | 0 |
/* Program pro obsluhu stisku tlačítka */ //Nastavení desky – inicializace pinů //Piny 2 a 3 jsou výstupy na LED, pin 7 je určen pro vstup z tlačítka void setup() { pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(7,INPUT_PULLUP); } //Provedení programu – spuštění v nekonečné smyčce void loop() { //program inicializuje proměnnou tlacitko a vkládá do ní hodnotu, kterou načte na vstupu z pinu 7 int tlacitko = digitalRead(7); //v podmínkovém příkazu program reaguje na na hodnotu, která je aktuálně obsahem proměnné tlacitko //je-li stav 0 je splněna první část podmínky a rozsvítí se LED na pinu 2, není li stav 0 uplatní se druhá část podmínky – rozsvítí se LED na pinu 3 if (tlacitko==0) { digitalWrite(2,HIGH); digitalWrite(3,LOW); } else { digitalWrite(2,LOW); digitalWrite(3,HIGH); } } |
Úkoly:
1, sestav si zapojení popsané v lekci a přeprogramuj ho tak, aby se v případe stisku tlačítka rozsvěcela LED na pinu 3 a v případě, že tlačítko nebude stisknuté zase LED na pinu 2.
https://www.tinkercad.com/things/iATrsRaNZK2
programovy-vstup-cili-tlacitka