Klávesnice 4x4 je vstupní modul pro Arduino. Tato klávesnice je složena z 16 tlačítek, které jsou umístěny v matici 4x4. Díky tomu nemusíme používat 16 vodičů pro propojení, ale pouze 8 (počet řádků + počet sloupců).
Pro úspěšné propojení klávesnice s Arduinem je nutné zapojit celkem 8 vodičů. Já jsem propojil postupně všechny vodiče na datové piny D2-D9, přičemž správné nastavení řádků a sloupců řešeno v programu. Pro všechny datové piny lze také využít jiné volné, jen je nutné tuto volbu provést také na začátku programu.
Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu Keypad, návod, jak na to, je uveden zde.
Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny. V dalším kroku jsou vytvořeny proměnné udávající počet řádků a sloupců a společně s nimi je také vytvořeno pole s pojmenováním jednotlivých tlačítek. Já jsem v ukázce pojmenoval tlačítka 1-15(F) dle hexadecimální soustavy a poslední tlačítko 16 je označeno mřížkou #. Po nastavení pojmenování následuje vytvoření proměnných, které obsahují čísla propojovacích pinů. A všechny zapsané údaje jsou následně použity při vytvoření instance klávesnice z knihovny.
V podprogramu setup provedeme jediný krok, a to nastavení komunikace po sériové lince rychlostí 9600 baudů.
Nekonečná smyčka loop je díky použití knihovny jednoduchá. V prvním kroku vždy načteme do lokální proměnné hodnotu stisknuté klávesy. Poté pomocí podmínky if ověříme, jestli byla nějaká klávesa stisknuta a pokud je tato podmínka splněna, tak si vytiskneme nastavený znak po sériové lince.
// Arduino klávesnice 4x4 16 tlačítek // navody.dratek.cz // připojení knihovny #include <Keypad.h> // vytvoření proměnných údávajících // počet řádků a sloupců klávesnice const byte radky = 4; const byte sloupce = 4; // vytvoření pole s rozmístěním kláves char keys[radky][sloupce] = { {'1', '2', '3', '4'}, {'5', '6', '7', '8'}, {'9', 'A', 'B', 'C'}, {'D', 'E', 'F', '#'} }; // nastavení čísel pinů pro spojení s klávesnicí byte pinyRadku[radky] = {5, 4, 3, 2}; byte pinySloupcu[sloupce] = {6, 7, 8, 9}; // vytvoření instance klavesnice z knihovny Keypad Keypad klavesnice = Keypad( makeKeymap(keys), pinyRadku, pinySloupcu, radky, sloupce); void setup() { // komunikace přes sériovou linku rychlostí 9600 baud Serial.begin(9600); } void loop() { // načtení hodnoty stisknuté klávesy do proměnné char klavesa = klavesnice.getKey(); // kontrola obsahu proměnné se stisknutou klávesou // pokud bylo cokoli stisknuto, vytiskneme klávesu // po Sériové lince if (klavesa) { Serial.print("Stisknuta klavesa: "); Serial.println(klavesa); } }
Po nahrání ukázkového kódu do Arduino desky s připojenou klávesnicí dostaneme například tento výsledek:
Stisknuta klavesa: 1 Stisknuta klavesa: 2 Stisknuta klavesa: 3 Stisknuta klavesa: 4
Klávesnice 4x4 je jednoduchým modulem, který hlavně začátečníkům může pomoci s pochopením funkce maticových klávesnic (matice=pole kláves). V tomto případě můžeme zjistit, že jednoduchou konstrukcí můžeme pomocí pouze osmi datových pinů číst stav šestnácti kláves. Tato klávesnice se díky jednoduchému a malému provedení může hodit hlavně pro testování či pro zařízení, kde nemáme příliš místa a chceme mít k dispozici 16 tlačítek. Její výhodou je pak rozhodně velmi nízká cena a jednoduchá obsluha.
Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/4996-arduino-klavesnice-4x4-16-tlacitek.html