Folientastatur (Membran Keypad) mit Arduino benutzen

Die Mission: Mit dem Raspberry Pi auf Tastatur-Eingaben eines 4×4 Matrix Membran Keypad reagieren. Immer zum Handy greifen, wenn man das Licht am Schreibtisch anmachen will ist doch ein bisschen nervig, also müssen ein paar physikalische Tasten her…

Was wird benötigt?

Funktionsweise eines Matrix-Keypads

Genau richtig komme da die sehr günstigen 4×4 Membran Keypads. Doch leider kann die Folientastatur nicht direkt vom Raspberry Pi benutzt werden. Diese Tastaturen benutzten einen Trick um 16 Tasten mit nur 8 Leitungen ansprechen zu können. Die ersten 4 Leitungen sind jeweils mit allen Tasten in einer Reihe verbunden und die restlichen 4 Leitungen jeweils mit allen Tasten in einer Spalte.

Würde man nun an die ersten 4 Leitungen immer eine Spannung anlegen und eine Taste drücken, so lege die Spannung an der Leitung für die gesamte entsprechende Spalte an. Es wäre also nicht eindeutig, welche Taste in der Spalte gedrückt wurde. Der Trick ist nun, dass man die Spannung nicht an den ersten 4 Leitungen gleichzeitig anlegt sondern immer nacheinander und dann jeweils die Spalte abfrägt. Da man weiß an welcher Reihe gerade die Spannung anlag, weiß man durch Abfrage der Spalte nun die Taste. Der ganze Prozess muss natürlich so schnell sein, so dass man jeden Tastendruck auch erwischt. Würde man die Abfrage direkt mit dem Raspberry Pi machen, dann wäre dieser damit die ganze Zeit beschäftigt und man hätte keine Rechenzeit mehr für andere Dinge übrig.

Hier kommt der Arduino ins Spiel. Der Plan: Der Arduino frägt die Tastatur ab und sendet beim erkennen eines Tastendrucks die Taste über USB-Serial an den Raspberry Pi

Hardware anschließen

Die hier benutzte Pin-Zuordnung:

Tastatur Arduino
1 D9
2 D8
3 D7
4 D6
5 D5
6 D4
7 D3
8 D2
Arduino Board mit Folientastatur

Arduino Board mit Folientastatur. Pin 0 der Tastatur ist ganz links.

Software aufspielen

Ladet zuerst die Arduino IDE herunter herunter, installiert und startet sie. Nun benötigt man noch die Keypad Bibliothek und Import diese über: Sketch -> Library importieren -> Add Library…

Danach fügt man folgenden Code in den Editor ein und lädt ihn mit einem Klick auf den Pfeil auf den Arduino.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*4x4 Matrix Keypad connected to Arduino
 This code prints the key pressed on the keypad to the serial port*/

 
#include <Keypad.h>
 
const byte numRows= 4; //number of rows on the keypad
const byte numCols= 4; //number of columns on the keypad
 
//keymap defines the key pressed according to the row and columns just as appears on the keypad
char keymap[numRows][numCols]=
{
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
 
//Code that shows the the keypad connections to the arduino terminals
byte rowPins[numRows] = {9,8,7,6}; //Rows 0 to 3
byte colPins[numCols]= {5,4,3,2}; //Columns 0 to 3
 
//initializes an instance of the Keypad class
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols);
 
void setup()
{
  Serial.begin(9600);
}
 
//If key is pressed, this key is stored in 'keypressed' variable
//If key is not equal to 'NO_KEY', then this key is printed out
//if count=17, then count is reset back to 0 (this means no key is pressed during the whole keypad scan process
void loop()
{
  char keypressed = myKeypad.getKey();
  if (keypressed != NO_KEY) {
    Serial.print("K ");
    Serial.write(keypressed);
    Serial.println("");
    Serial.flush();
  }
}

(Code von learningaboutelectronic)

Nun nur noch den Serial Monitor öffnen und jeder Tastendruck sollte erkannt werden:

Arduino IDE mit Keypad

Arduino IDE mit Keypad

 

7 Antworten

  1. Kann man statt den Raspberry auch einen anderen Linux PC benutzen?

    Danke schon mal im vorrauss.

    Janosch Krauss

  2. Nettes Tutorial! Hat sofort nach dem anschließen funktioniert.
    Die Ausgabe mit den Tastendrücken stimmt auch überein.

    MfG

  3. Hi, Da super funktioniert. Wie kann die die Ausgabe auf ein OLED ausgeben?
    Ich hab leider überhaupt keine Ahnung von Programmierung deshalb bastel ich mich von Codeschnipsel zu Codeschnipsel.

  4. Bei mir geht das nicht hat jemand eine Idee woran das liegen kann?

  5. My Porn Free – это ежечасное вольное обновление порно кинофильмов самого идеальнейшего качества , личностной и спортивной , жесткой и лёгкой порно интимного изложения . Наш порно раздел наделяет полтысячи фото , вы можете абсолютно онлайн глядеть всё наше изложение всех порно тематик . Если вы выискивайте фистинг фото с секс-бомбами или грудастыми , негритянки и эге , межгрупповой фистинг и фистинг . MyPornFree.ru фистинг фото портал удовлетворит все ваши порно-фантазии . Глядите первые добавленные порно видеоролики к нам на портал . Глядите порно бесплатно , видите порно с номера и гаджета , с Андроид или iPad ведь всю наши фото бесплатно порно фото фильмы xxx совершенно онлайн и только в идеальнейшем качестве собранное заранее для Вас . Скачивайте фото на видеотелефоны или же понаблюдаете через сотовый интренет ведь наше качество самоотдачи фото самая низкое . Вкусного показа фото порно бесплатно с видеотелефона mypornfree.ru.

Schreibe einen Kommentar

Home Allgemein Folientastatur (Membran Keypad) mit Arduino benutzen
© sweet pi - sweet home
Top