Arduino klávesnice 4x4 16 tlačítek

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

Další podobné články