Folientastatur

Mit der 4×4 Folientastatur Zahlen eingeben am Arduino

Ich habe eine 4×4 Folientastatur bekommen. Damit möchte ich verschiedene Zahlen in den Arduino Uno eingeben, ändern und auch löschen können.

Es gibt eine praktische Library Keyboard auf der Arduino Seite. Die erleichtert die Arbeit ganz erheblich.

Die Tastatur hat links 4 Anschlüsse für die 4 Zeilen, von oben beginnend. Daneben sind die 4 Anschlüsse für die 4 Zeilen von links beginnend. Diese 8 Anschlüsse werden mit Kabeln verbunden zu den Arduino Digital Pins D11…D4. Das finden wir nachher im Programm wieder.

Folientastur am Arduino

Die 4 Zahlen sollen mit den A / B / C / D Tasten ausgewählt werden und dann mit den Ziffern 0-9 neu eingegeben werden können. Die * Taste löscht die gerade aktive Zahl. Die # Taste gibt alle Zahlen seriell zum PC aus, hierbei ist die zur Zeit aktive Zahl groß geschrieben, die anderen sind klein geschrieben.

Ein Beispiel :
Die Zahl A soll 123 werden und dann ausgegeben werden. Dazu drückt man A123#.

folientastatur4x4-ausgabe-200

Mit A*# kann die Zahl A dann wieder gelöscht werden zu 0 und ausgegeben werden.
Das liest sich dann: A – löschen – Ausgabe.

Hier das Programm

// 4x4 Tastatur
// 4 Zahlen eingeben, Zahl A-D
// A-D setzen die aktive Zahl
// 1-9 geben die Zahl ein
// # gibt alles aus
// * setzt die aktive Zahl zu 0
//
// Beispiel: Zahl A soll 12 sein und ausgeben: A12#
// Beispiel: Zahl C soll gelöscht werden auf 0 und ausgeben: C*#
//
// Matthias Busse Version 0.2 3.11.2016

#include < Keypad.h> // http://playground.arduino.cc/code/Keypad#Download

const byte ROWS = 4; // 4 Zeilen
const byte COLS = 4; // 4 Spalten
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {11, 10, 9, 8}; // Zeilen Anschluesse beim Arduino Pin 11-8
byte colPins[COLS] = {7, 6, 5, 4}; // Spalten Anschluesse beim Arduino Pin 7-4
long zahl, zahla=0, zahlb=0, zahlc=0, zahld=0;
bool a=0, b=0, c=0, d=0;

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(38400); // Serielle Ausgabe am PC
}
  
void loop(){
  char key = keypad.getKey();
  
  if (key){
    switch(key) {
    case '*' :                            // Die gerade aktive Zahl löschen 
      if(a) zahla=0; 
      if(b) zahlb=0;
      if(c) zahlc=0;
      if(d) zahld=0;
      zahl=0;
      break;
    case '1' : zahl*=10; zahl+=1; break;  // Die Ziffern 1 bis 0 eingeben
    case '2' : zahl*=10; zahl+=2; break;
    case '3' : zahl*=10; zahl+=3; break;
    case '4' : zahl*=10; zahl+=4; break;
    case '5' : zahl*=10; zahl+=5; break;
    case '6' : zahl*=10; zahl+=6; break;
    case '7' : zahl*=10; zahl+=7; break;
    case '8' : zahl*=10; zahl+=8; break;
    case '9' : zahl*=10; zahl+=9; break;
    case '0' : zahl*=10; zahl+=0; break;
    case 'A' : a=1; b=0; c=0; d=0; zahl=0; break; // Zahl A aktivieren
    case 'B' : a=0; b=1; c=0; d=0; zahl=0; break; // Zahl B aktivieren
    case 'C' : a=0; b=0; c=1; d=0; zahl=0; break; // Zahl C aktivieren
    case 'D' : a=0; b=0; c=0; d=1; zahl=0; break; // Zahl D aktivieren
    case '#' :                                    // alle Zahlen ausgeben
      if(a) Serial.print("A: "); else Serial.print("a: ");Serial.println(zahla); 
      if(b) Serial.print("B: "); else Serial.print("b: ");Serial.println(zahlb);
      if(c) Serial.print("C: "); else Serial.print("c: ");Serial.println(zahlc);
      if(d) Serial.print("D: "); else Serial.print("d: ");Serial.println(zahld);
      Serial.println();
      break; // Ausgabe
    default: break;
    }
  if(a) zahla=zahl;   // Wenn ZahlA aktiv ist, dann zahl in ZahlA übernehmen
  if(b) zahlb=zahl;
  if(c) zahlc=zahl;
  if(d) zahld=zahl;
  }
}

Verwendet wurden:
Arduino Version 1.6.5
Folientastatur für ein paar Euro und Geduld von ebay
8 farbige Drahtbrücken zum Anschluß

von Matthias Busse

Ein Gedanke zu „Mit der 4×4 Folientastatur Zahlen eingeben am Arduino

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.