Tlačítko a různá délka stisku Jak tlačítko funguje? • Tlačítko je elektromechanický prvek • Druhy tlačítek • Normálně otevřené • Normálně uzavřené • Složení: kontakt, obal, pohyblivá část, (pružina) • 2 stavy tlačítka: • Rozpojený kontakt • Sepnutý kontakt Zapojení tlačítka Aby mohl počítač reagovat na stisknutí tlačítka, tlačítko připojíme na pin Arduina, který nastavíme jako digitální vstup. Tlačítko musíme zapojit tak, aby byla v klidu na daném vstupu logická 0 a když je sepnuté logická 1. Zapojení tlačítka Musíme zajistit, aby v klidovém stavu bylo na vstup připojeno 0V, aby nedošlo k falešnému měření hodnot. Kdybychom to neřešili, na vstupu by nám skákaly náhodně velké hodnoty. To se řeší použitím pull-down rezistoru, či použitím interního rezistoru Arduina a funkce INPUT_PULLUP. Pull-down rezistor • Je rezistor, který zapojíme mezi vstupní pin a zem. • Tlačítko je připojeno mezi kladnou svorku zdroje (5V) a vstup. • Pokud je tlačítko v klidovém stavu, je vstup mikrokontroleru přes rezistor spojen se zemí (je na něm 0V). • Pokud je tlačítko stisknuté, tak je na vstup připojeno 5V zdroje. To je ovšem připojeno i na pull-down rezistor, přes který tak prochází proud do země. • A to nám zajišťuje konzistentní vypisování logické 0 v klidovém stavu tlačítka. Zapojení tlačítka s pulldown rezistorem • Potřebujeme 3 vodiče • První dva vodiče připojíme do dvou vertikálních řad po straně nepájivého pole. Tím si zpřístupníme GND a +5V napájení. • Třetí vodič na jednom konci zapojíme do digitálního pinu 2, druhý konec patří do jednoho z pinů tlačítka. • Stejný pin tlačítka bude propojen přes pull-down rezistor ke GND • Zbývající pin je připojen k +5V. Kód pro čtení hodnot na tlačítku s pull-down rezistorem • Při stisku nám počítač vypisuje logickou 1 • V klidovém stavu tlačítka se vypisuje logická 0 Funkce INPUT_PULLUP • Díky této funkci lze zapojit tlačítko bez pull-down rezistoru. • Využívá se pull-up rezistoru, což je interní rezistor, který se nachází v pinu Arduina uvnitř čipu. Ten je připojen na VCC (PULL-UP). • Arduinu sdělíme, že hodláme využít právě tohoto rezistoru pomocí: • Při použití funkce INPUT_PULLUP se vypisují hodnoty naopak – stisknutí tlačítka připojí pin ke GND - vypisuje se logická 0, v klidovém stavu tlačítku se vypisuje logická 1. Zapojení tlačítka bez pulldown rezistoru • Potřebujeme 2 vodiče • Prvním vodičem připojíme tlačítko na GND. • Druhým vodičem připojíme tlačítko k Arduinu na digitální pin 2. • Když je tlačítko nestlačené, mezi nohami tlačítka neexistuje žádné spojení. • Jelikož je interní pull-up rezistor na pinu 2 aktivní, při otevření (nestlačení) tlačítka čteme HIGH (1). Když je tlačítko zavřené, spojení se zemí je úplné a čteme LOW (0). Kód pro čtení hodnot na tlačítku bez pull-down rezistoru • Při stisku nám počítač vypisuje logickou 0 • V klidovém stavu tlačítka se vypisuje logická 1 Měření doby stisku tlačítka K měření doby stisku tlačítka využijeme funkce pulseIn(); pulseIn(); pulseIn(pin, value, timeout); pin – číslo pinu (v našem případě číslo pinu, na kterém je zapojeno tlačítko). Parametry funkce: value – na jakou hodnotu má reagovat (HIGH/LOW). timeout – (volitelná) max.doba čekání na konec pulzu (ms). pulseIn(); • Jak funguje funkce: • Čte „pulz“ na pinu. • Kdyby byla zadaná hodnota v pulseIn() „HIGH“, pulseIn() čeká, než se na pinu změní hodnota z „LOW“ na „HIGH“, poté spustí časovač a čeká, než se hodnota změní opět na „LOW“. • Funkce nám vrací délku pulzu v milisekundách. • Pokud funkce nepřečte žádný „pulz“ v námi zadaném „timeoutu“, vrátí nám 0. • Funkce měří „pulzy“ mezi 10 milisekundami a 3 minutami. Kód pro čtení délky stisku tlačítka • Po stisku a následném puštění tlačítka nám počítač vypíše dobu, po kterou bylo tlačítko stisknuté v milisekundách. Díky za pozornost!