
Membránová klávesnice je jednoduchý a šikovný způsob, jak do Arduino projektu přidat tlačítka pro zadávání čísel, znaků nebo různých příkazů. Využijete ji třeba při stavbě číselného zámku, ovládacího panelu, jednoduchého menu nebo třeba vlastního sejfu.
V tomto návodu si ukážeme, jak fungují membránové klávesnice 4×4 a 1×4, jak je správně zapojit k Arduinu a jak pomocí programu zjistit, kterou klávesu jste právě stiskli. Nakonec si větší klávesnici vyzkoušíme také společně s LCD displejem.
Jak membránová klávesnice funguje?
Membránová klávesnice se skládá z několika tenkých pružných vrstev s vodivými cestami. Když stisknete některou klávesu, dvě vodivé vrstvy se v daném místě spojí a vznikne elektrický kontakt. Po uvolnění klávesy se vrstvy opět oddělí.
U klávesnice 4×4 je celkem 16 tlačítek uspořádaných do matice čtyř řádků a čtyř sloupců. Každé tlačítko se nachází na průsečíku jednoho řádku a jednoho sloupce. Arduino postupně kontroluje jednotlivé řádky a sloupce a podle jejich propojení pozná, kterou klávesu jste stiskli.
Díky tomuto zapojení není potřeba jeden vodič pro každé tlačítko. Klávesnice se 16 tlačítky si vystačí pouze s 8 vodiči – čtyřmi pro řádky a čtyřmi pro sloupce. Menší klávesnice 1×4 pracuje na stejném principu, jen má jeden řádek a čtyři sloupce.
Zapojení 4×4 membránové klávesnice
Začneme větší klávesnicí 4×4. Její zapojení je jednoduché – z klávesnice vede osm vodičů, které odpovídají čtyřem řádkům a čtyřem sloupcům. Klávesnice přitom nepotřebuje žádné samostatné napájení, jednotlivé vodiče jednoduše připojíme k pinům Arduina podle schématu.
Co budeme potřebovat?
- řídicí desku Arduino UNO nebo jinou kompatibilní desku Arduino
- odpovídající USB kabel (u klasického Arduino UNO R3 kabel USB A–B)
- membránovou klávesnici 4×4
- propojovací vodiče M–M
- nepájivé kontaktní pole podle potřeby
Máme všechno připraveno? Můžeme se pustit do zapojování!

Klávesnici zapojíme podle schématu výše. Při pohledu zepředu na klávesnici, kdy její připojovací pásek směřuje dolů, vedou první čtyři vývody zleva k řádkům a další čtyři ke sloupcům. V našem zapojení je postupně připojíme k digitálním pinům Arduina D9, D8, D7, D6, D5, D4, D3 a D2.
Pokud některé vodiče omylem prohodíte, klávesnici tím nepoškodíte. Arduino ale při stisku nebude rozpoznávat správné znaky, takže v takovém případě nejprve zkontrolujte pořadí vodičů.
Program pro 4×4 klávesnici
Zapojení máme hotové, takže je čas klávesnici oživit pomocí programu. Abychom nemuseli sami řešit postupné kontrolování všech řádků a sloupců, využijeme knihovnu Keypad, která se o komunikaci s maticovou klávesnicí postará za nás.
Nejdříve musíme knihovnu nainstalovat. V Arduino IDE 2 otevřeme správce knihoven Library Manager pomocí ikony knih v levém panelu. Do vyhledávání zadáme Keypad a nainstalujeme knihovnu od autorů Mark Stanley a Alexander Brevig.
Pokud instalujete Arduino knihovnu poprvé, podrobnější postup najdete také v našem návodu Jak správně naimportovat Arduino knihovnu.

Teď už můžeme napsat jednoduchý program. Ten bude neustále kontrolovat klávesnici a po stisknutí některé klávesy zobrazí její znak v Serial Monitoru.
// importujeme knihovnu #include <Keypad.h> // definujeme počet řádků (rows) const byte rows = 4; // definujeme počet sloupců (columns) const byte cols = 4; // vytvoříme pole (matici) 4x4 s názvem keys (klávesy) char keys[rows][cols] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; // nastavení pinů pro řádky byte rowPins[rows] = {9,8,7,6}; // nastavení pinů pro sloupce byte colPins[cols]= {5,4,3,2}; // vytvoříme objekt keypad_1 a předáme mu nastavení klávesnice // schválně je tam "_1", klávesnic můžete klidně najednou zapojit i více Keypad keypad_1 = Keypad( makeKeymap(keys), rowPins, colPins, rows, cols ); void setup() { // zapnutí sériové linky Serial.begin(9600); } void loop() { // vytvoření proměné "key" a načtení hodnoty do proměnné char key = keypad_1.getKey(); // pokud stiskneme klávesu, tak: if (key) { // se klávesa vypíše po sériové lince Serial.println(key); } }
Po nahrání programu do Arduina otevřeme Serial Monitor a nastavíme rychlost komunikace na 9600 baudů. Teď už stačí mačkat jednotlivé klávesy. Arduino pomocí funkce getKey() zjistí, která klávesa byla stisknuta, a její znak vypíše do Serial Monitoru.
Vyzkoušejte postupně všechna tlačítka. Pokud se po stisku zobrazují správné znaky, máme klávesnici správně zapojenou a můžeme pokračovat dál.
Zapojení membránové klávesnice 1×4
Pokud se vám do projektu nehodí větší klávesnice 4×4, můžete sáhnout po její menší variantě 1×4 se čtyřmi tlačítky. Princip fungování je stejný, jen je matice podstatně jednodušší – tvoří ji jeden řádek a čtyři sloupce.
Klávesnice má dva připojovací pásky, které jsou umístěné těsně za sebou, takže na první pohled mohou vypadat jako jeden. Na jednom pásku najdeme čtyři vodiče jednotlivých sloupců, zatímco na druhém je pouze jeden společný vodič řádku. K Arduinu tedy připojíme celkem pět vodičů.
Na obrázku níže je vyznačeno, který kontakt patří ke kterému tlačítku. Pozor, pořadí kontaktů není 1, 2, 3, 4! Při zapojování se proto raději řiďte obrázkem a schématem.
Co budeme potřebovat?
- Klon Arduino UNO R3 s Micro USB + USB kabel
- membránovou klávesnici 1×4
- propojovací vodiče M–M
- nepájivé kontaktní pole podle potřeby

Klávesnici připojíme k Arduinu podle obrázku výše. Jednotlivé vývody zapojíme následovně:
- tlačítko 2 → pin D12
- tlačítko 1 → pin D11
- tlačítko 4 → pin D10
- tlačítko 3 → pin D9
- společný vodič → pin D8
Možná jste si všimli, že pořadí vývodů tlačítek není 1, 2, 3, 4. Je to dáno uspořádáním vodivých cest uvnitř klávesnice, proto se při zapojování řiďte obrázkem a uvedeným pořadím pinů.
Stejně jako u větší klávesnice budeme stisknuté tlačítko zobrazovat v Serial Monitoru.
#include <Keypad.h> const byte ROWS = 1; const byte COLS = 4; char keys[ROWS][COLS] = { {'1','2','3','4'} }; byte rowPins[ROWS] = {8}; //tlačítka 2, 1, 4, 3 (zleva do prava) byte colPins[COLS] = {11,12,9,10}; Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup() { Serial.begin(9600); } void loop() { char customKey = customKeypad.getKey(); if (customKey) { Serial.println(customKey); } }
Zapojení 4x4 klávesnice s LCD didplejem
V Serial Monitoru už stisknuté klávesy zobrazit umíme. Teď si náš projekt ještě trochu vylepšíme a stisknuté znaky zobrazíme přímo na LCD displeji. Z jednoduché klávesnice tak začíná vznikat malý ovládací panel, který už můžete využít třeba pro zadávání kódu nebo ovládání vlastního zařízení. Pro nastavení kontrastu displeje je použit trimr.
Co budeme potřebovat?
- Arduino UNO
- membránovou klávesnici 4×4
- LCD displej 20×4
- trimr 10 kΩ pro nastavení kontrastu displeje
- propojovací vodiče M–M
- USB kabel A–B
- nepájivé kontaktní pole podle potřeby
Klávesnice 4×4 nám zabere osm digitálních pinů Arduina a klasické paralelní zapojení LCD displeje potřebuje dalších šest. Na Arduino UNO už proto nemáme dostatek volných digitálních pinů. To ale vůbec nevadí – analogové piny A0 až A5 můžeme použít také jako digitální vstupy a výstupy, takže je v tomto zapojení využijeme pro LCD displej.
LCD displej lze připojit také úsporněji pomocí I2C sběrnice, v tomto návodu ale zůstaneme u klasického paralelního zapojení. Pokud vás práce s LCD zajímá podrobněji, podívejte se také na náš návod Práce s LCD je jednoduchá!.

Na schématu je zobrazená jiná velikost LCD displeje, ale zapojení je stejné pro běžné znakové LCD displeje kompatibilní s řadičem HD44780, které používají stejné paralelní rozhraní.
Důležité je pouze v programu správně nastavit počet sloupců a řádků použitého displeje. V našem případě používáme LCD 20×4, proto máme v programu:
lcd.begin(20, 4);
Pokud byste například použili displej 16×2, změnili byste tento řádek na lcd.begin(16, 2);.
Program pro 4×4 klávesnici s LCD displejem
Program je vlastně spojením dvou věcí, které už známe – čtení membránové klávesnice a ovládání LCD displeje. Knihovna Keypad zjistí, kterou klávesu jsme stiskli, a pomocí knihovny LiquidCrystal potom tento znak zobrazíme na displeji.
Pokud si chcete programování trochu procvičit, zkuste si nejdříve program sestavit sami a teprve potom ho porovnejte s naším řešením níže.
#include <Keypad.h> // importování knihovny pro LCD (je součástí IDE) #include <LiquidCrystal.h> const byte rows = 4; const byte cols = 4; char keys[rows][cols] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte rowPins[rows] = {9,8,7,6}; byte colPins[cols]= {5,4,3,2}; // LCD je připojeno na analogové piny LiquidCrystal lcd(A0,A1,A2,A3,A4,A5); Keypad keypad_1 = Keypad( makeKeymap(keys), rowPins, colPins, rows, cols ); void setup() { Serial.begin(9600); // nastavíme LCD na 20 znaků a 4 řádky lcd.begin(20, 4); } void loop() { char key = keypad_1.getKey(); if (key) { // vypíše znak na displej lcd.print(key); Serial.println(key); } }
A je hotovo!
Teď už víte, jak membránová klávesnice funguje, jak ji připojit k Arduinu a jak zjistit stisknutou klávesu. Vyzkoušeli jsme si varianty 4×4 i 1×4 a nakonec jsme stisknuté znaky zobrazili také přímo na LCD displeji.
Tím ale možnosti klávesnice rozhodně nekončí. Můžete ji využít třeba pro číselný zámek, zadávání PINu, ovládání menu nebo vlastní malý ovládací panel. Zkuste si některý z těchto projektů vymyslet a naprogramovat!
Další inspiraci najdete v našich návodech HWKITCHEN.
