Membránová klávesnice je vstupní modul (nejen) pro Arduino. Tato klávesnice obsahuje celkem tři tlačítka, která jsou umístěna na plastovém nosiči se samolepící plochou. Můžete je tedy po odstranění krycí folie nalepit na libovolný povrch.
Tlačítka mají membránovou strukturu, je tedy nutné je umístit na pevný povrch, jinak se bude klávesnice špatně používat. Co se týká zapojení, tak tlačítka mají jeden společný kontakt, který můžete připojit ať už na napájecí napětí nebo na zem.
Pro úspěšné propojení Arduino desky s membránovou klávesnicí je nutné zapojit celkem čtyři vodiče. Propojíme první pin s D5, druhý pin s D6, třetí pin s D7 a čtvrtý pin se zemí Arduina. Pro datové piny je možné použít také jiné volné piny, ale je nutné tuto volbu provést také na začátku programu. Klávesnici můžete také používat se společným vodičem připojeným na 5V či 3V3, ale poté je nutné odstranit PULLUP nastavení a podmínku stisku změnit na „== 1“.
Ukázkový kód obsahuje na svém začátku nastavení počtu tlačítek u klávesnice a nastavení čísel propojovacích pinů, které jsou vytvořeny jako pole proměnných typu integer. Díky tomu můžeme ušetřit počet řádků v programu a také zjednodušit práci s tlačítky. A na dalším řádku si vytvoříme proměnnou typu pole bool pro uložení stavu všech tlačítek.
V podprogramu setup provedeme nejprve inicializaci komunikace po sériové lince a následně pomocí for smyčky nastavíme všechny piny s tlačítky jako vstupní s odporem PULLUP (tedy odpor připojený na 5V napětí). Tento odpor nám zajistí to, že bez stisknutí nám případné rušení nebude měnit stav tlačítka.
Nekonečná smyčka loop opět pracuje s podobnou for smyčkou, ve které budeme obsluhovat všechna tlačítka. Pro každé tlačítko tedy vždy načteme stav do proměnné a poté si pomocí podmínky if zkontrolujeme, jestli nebylo tlačítko stisknuto (tedy připojeno na zem). A pokud se tak stane, tak vypíšeme informační zprávu na sériovou linku s číslem tlačítka. Na konci smyčky loop se pak nachází už jen pauza po dobu 100ms před novým během smyčky.
// Arduino membránová klávesnice 3 tlačítka // proměnná udávající počet tlačítek const int pocetTlacitek = 3; // nastavení propojovacích pinů const int tlacitka[pocetTlacitek] = {5, 6, 7}; // vytvoření proměnné pro uložení stavu tlačítek bool stav[pocetTlacitek]; void setup() { // inicializace komunikace po sériové lince Serial.begin(9600); // nastavení tlačítek jako vstup // s pull-up odporem for (int i = 0; i < pocetTlacitek; i++) { pinMode(tlacitka[i], INPUT_PULLUP); } } void loop() { // nastavení tlačítek jako vstup for (int i = 0; i < pocetTlacitek; i++) { stav[i] = digitalRead(tlacitka[i]); // kontrola stavu tlačítka, // pokud bylo stisknuto, vypiš hlášku if (stav[i] == 0) { Serial.print("Tlacitko "); Serial.print(i); Serial.println(" bylo stisknuto."); } } // krátká pauza před novým během smyčky delay(100); }
Po nahrání ukázkového kódu do Arduino desky s připojenou klávesnicí získáme například tento výsledek. Pokud si tedy otevřete Sériový monitor, tak si můžete vyzkoušet postupně stisknout jednotlivá tlačítka či jejich kombinaci a na Monitoru se Vám zobrazí výpis stisknutých tlačítek s jejich čísly od nuly do dvojky.
Tlacitko 0 bylo stisknuto. Tlacitko 0 bylo stisknuto. Tlacitko 1 bylo stisknuto. Tlacitko 2 bylo stisknuto.
Membránová klávesnice se třemi tlačítky je jednoduchý ovládací prvek pro Arduino. Tyto membránové klávesnice se často používají v průmyslu či u různých ovladačů, kde by se mohl u normálního tlačítka dostat do jeho mechanismu nějaký jemný prach či jiné částice. U membránové klávesnice jsou ale všechny mechanické i elektrické kontakty uloženy uvnitř klávesnice, a proto nám prach ani stříkající voda nenaruší její činnost. Tuto klávesnici tedy můžete rozhodně využít u různých ovladačů, kontrolních panelů a dalších zařízení, kde vyžadujete spolehlivé a odolné ovládání. Těchto membránových klávesnic se vyrábí mnoho různých druhů, které se liší počtem a rozložením kláves, přičemž všechny většinou fungují na podobném principu a mají stejné zapojení.
Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/4998-ardiuno-klavesnice-membranova-1x3.html