Hallo,
habe den nachfolgenden Code hier im Forum gefunden, welcher super funktioniert. Nun möchte ich die Ziffern Eingabe durch die Tastatur auf einem Display darstellen. Das bekomme ich irgendwie nicht hin. Im Serial Monitor werden sie untereinander angezeigt, auf dem Display mit tft.print(key) überschreibt er die Ziffern. Kann mir jemand helfen, weil im Netz habe ich nichts gefunden?
#include <Keypad.h>
char masterCode[] = "123456";
char limitedCode[] = "112233";
const byte ROWS = 4; // vier Reihen
const byte COLS = 4; // vier Spalten
// Define the Keymap
char keys[ROWS][COLS] = {
{'D', '#', '0', '*'},
{'C', '9', '8', '7'},
{'B', '6', '5', '4'},
{'A', '3', '2', '1'}
};
// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = { 37, 35, 33, 31 };
// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
byte colPins[COLS] = { 45, 43, 41, 39 };
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
// Einstellung für Servo und LEDs
const int greenPin = 51;
const int redPin = 53;
const int openDelay = 3000;
byte validateCode() { // 0...keine Taste 1...MasterCode 2...LimitedCode
static byte counter = 0;
static char code[sizeof(masterCode)];
char key = keypad.getKey();
if (!key) return 0; // keine Taste gedrückt, kann nicht gültig sein
if (counter == 0) memset(code, 0, sizeof(code)); // clear code string
//comment out
Serial.println(key); // comment out if not needed for debugging
switch (key) {
case '*': counter = 0; // start new code
break;
case '#':
if (strcmp(code, masterCode) == 0) // maybe correct code?
{
counter = 0;
return 1; // correct masterCode was entered: return 1
}
if (strcmp(code, limitedCode) == 0) // maybe correct code?
{
counter = 0;
return 2; // correct limitedCode was entered: return 2
}
break;
default : code[counter] = key; // just add the keystroke to the code
if (counter < sizeof(code) - 1) counter++;
}
return 0; // es wurde kein gültiger Code eingegeben
}
void setup() {
Serial.begin(9600);
// LED Pins setzen
pinMode(greenPin, OUTPUT);
pinMode(redPin, OUTPUT);
digitalWrite(greenPin, LOW);
digitalWrite(redPin, LOW);
}
void loop() {
byte schluessel = validateCode();
switch (schluessel) {
case 1:
Serial.println("Master Code");
// mach was bei Master Code
digitalWrite(greenPin, HIGH);
delay(5000);
// myservo.write(angleClosed);
digitalWrite(greenPin, LOW);
break;
case 2:
Serial.println("Limited Code");
// mach was bei Limited Code
digitalWrite(redPin, HIGH);
delay(5000);
digitalWrite(redPin, LOW);
break;
default:
break;
}
}
Vielen Dank