Hier der Schaltplan:
Und hier der Link zum Keypad. Die Pins 23-37 sind an dieses angeschalten:
Keypad 4x4
Wie gesagt wenn ich einen Sketch des Keypad einspiele und die Pins hier anpasse, dann bekomme ich meine gedrückte Taste im Serial Monitor angezeigt.
Beispielcode des Keypad welches funktioniert:
#include <Wire.h> // Wire Bibliothek hochladen
#include <LiquidCrystal_I2C.h>// Vorher hinzugefügte LiquidCrystal_I2C Bibliothek hochladen
LiquidCrystal_I2C lcd(0x27, 20, 4); //Hier wird festgelegt um was für einen Display es sich handelt. In diesem Fall einer mit 16 Zeichen in 2 Zeilen.
#include <Keypad.h>
//Hier wird die größe des Keypads definiert
const byte COLS = 4; //3 Spalten
const byte ROWS = 4; //4 Zeilen
//Die Ziffern/Zeichen:
char hexaKeys[ROWS][COLS]={
{'D','#','0','*'},
{'C','9','8','7'},
{'B','6','5','4'},
{'A','3','2','1'}
};
int anzahl;
byte colPins[COLS] = { 37, 35, 33, 31 }; //Definition der Pins für die 3 Spalten
byte rowPins[ROWS] = { 29, 27, 25, 23 };//Definition der Pins für die 4 Zeilen
//byte colPins[COLS] = { 9, 8, 7, 6 }; //Definition der Pins für die 3 Spalten
//byte rowPins[ROWS] = { 5, 4, 3, 2 };//Definition der Pins für die 4 Zeilen
char pressedKey; //pressedKey entspricht in Zukunft den gedrückten Tasten
Keypad myKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); //Das Keypad kann absofort mit myKeypad angesprochen werden
void setup() {
lcd.begin(); //Im Setup wird der LCD gestartet (anders als beim einfachen LCD Modul ohne 16,2 in den Klammern denn das wurde vorher festgelegt
Serial.begin(9600);
}
void loop() {
pressedKey = myKeypad.getKey(); //pressedKey entspricht der gedrückten Taste
if (pressedKey) { //Wenn eine Taste gedrückt wurde
anzahl++;
Serial.print("Die Taste ");
Serial.print(pressedKey);
Serial.print("wurde gedrueckt");
Serial.println(); //Teile uns am Serial Monitor die gedrückte Taste mit
lcd.setCursor(0,0); //Ab hier kann das I2C LCD Modul genau wie das einfache LCD Modul programmiert werden.
lcd.print("Welche Taste?");
lcd.setCursor(0,1); //Ab hier kann das I2C LCD Modul genau wie das einfache LCD Modul programmiert werden.
lcd.print("Die Taste");
lcd.setCursor(0,2); //Ab hier kann das I2C LCD Modul genau wie das einfache LCD Modul programmiert werden.
lcd.print(pressedKey);
lcd.setCursor(0,3); //Ab hier kann das I2C LCD Modul genau wie das einfache LCD Modul programmiert werden.
lcd.print(anzahl);
if (pressedKey == 'D') {
lcd.setCursor(0,0); //Ab hier kann das I2C LCD Modul genau wie das einfache LCD Modul programmiert werden.
lcd.print("JA");
}
}
}
Danke für die Hilfe!