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ů).

Arduino klávesnice 4x4 16 tlačítek

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.

Arduino klávesnice 4x4 16 tlačítek schéma

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

FB tw

Další podobné články