Membránová klávesnice se často využívá pro průmyslové aplikace, kdy je zapotřebí připevnit ovládací prvek bez vrtání. Její velkou výhodou je také její tenký profil. Tato vybraná membránová klávesnice 1x4 obsahuje celkem 4 tlačítka a připojuje se pomocí 5 pinů, kdy pátý pin navíc se připojuje na zem. Ze schématu na obrázku níže vyplývá, že každé tlačítko má vyvedený jeden kontakt ven a zbylý kontakt u všech tlačítek je spojen v jeden vodič.
Pro připojení k Arduino desce tedy stačí první kontakt (na konektoru klávesnice je napařený na samostatné vrstvě krycího plastu) připojit na GND a zbylé kontakty tlačítek připojit na zvolené piny, v příkladu níže jsou to piny 2-5.
Ukázkový kód pro zapojení a vyzkoušení tlačítek obsahuje na prvním místě inicializaci, kdy zapíšeme čísla pinů tlačítek do číselného pole nazvaného „tlacitka“. Poté si vytvoříme proměnnou „stisk“ pro ukládání stavu tlačítka v hlavní smyčce. Následuje podprogram setup, kde si nejprve nastavíme komunikaci přes sériovou linku s rychlostí 9600 baud a nastavíme si pole tlačítek jako vstupní s připojeným pull-up odporem, který spojí tlačítka přes odpor s napájecím napětím. Jako další je popsána loop smyčka, ve které si vždy načteme stav tlačítka do proměnné „stisk“ a pokud tento stav bude LOW, tedy spojeno se zemí, vytiskneme na sériovou linku zprávu o číslu tlačítka „x“ a počkáme 0,5 s. Pokud vynecháme příkaz „delay“, bude se nám i při krátkém stisku vypisovat několikrát po sobě informace o stisknutí na sériovou linku.
// Membránová klávesnice 1x4 // pole s piny připojených tlačítek const int tlacitka[] = {3,2,5,4}; // proměnná stavu tlačítka int stisk = 0; void setup() { // komunikace přes sériovou linku rychlostí 9600 baud Serial.begin(9600); // inicializace pole tlačítek for(int x=0; x<4; x++) { // zapojení tlačítek jako vstup s pull-up odporem pinMode(tlacitka[x], INPUT_PULLUP); } } void loop(){ // čtení stavu jednotlivých tlačítek ve smyčce for(int x=0; x<4; x++) { //načtení stavu tlačítka a uložení do proměnné stisk stisk = digitalRead(tlacitka[x]); // pokud je tlačítko stisknuto // vykonej následující if (stisk == LOW) { // vytiskni pres sériovou linku číslo tlačítka a zprávu Serial.print(x); Serial.println(" stisknuto"); // vyčkej 500 ms kvůli zbytečnému množství tisknutých znaků delay(500); } } }
Po nahrání programu do Arduino desky si můžeme otevřít Sériový monitor a otestovat jednotlivá tlačítka. Určitě jste si povšimli v programu nepravidelné posloupnosti tlačítek 3,2,5,4, která byla zvolena pro správné pořadí při tisknutí na sériovou linku. Pokud totiž odlepíte krycí samolepku membránové klávesnice, zjistíte, že kontakty jsou vyvedeny na konektor právě takto nepravidelně.
Seznam použitých komponent:
http://dratek.cz/arduino/1006-arduino-klavesnice-membranova-1x4-1427823380.html
http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
http://dratek.cz/arduino-kabelaz-propoje-rozsireni/1063-arduino-vodice-samec-samec-40-kusu.html