Hallo,
ich habe eine Frage zu einem Code für ein Türschlossprojekt. Es handelt sich um diesen Code:
#include <MyAnalogKeyPad.h>
#include <LiquidCrystal.h>
#define analogPinKeyPad 0 // Definition des analogen Pins
#define RS 12 // Register Select
#define E 11 // Enable
#define D4 5 // Datenleitung 4
#define D5 4 // Datenleitung 5
#define D6 3 // Datenleitung 6
#define D7 2 // Datenleitung 7
#define COLS 16 // Anzahl der Spalten
#define ROWS 2 // Anzahl der Zeilen
int CODE = 9200; // Die generierte Zahl, Anzahl der Versuche
char Eingabe[5]; // max. 5 stellige Zahl generieren
byte stelle;MyAnalogKeyPad myOwnKeyPad (analogPinKeyPad); // KeyPad Instanziieren
LiquidCrystal lcd ( RS,E,D4,D5,D6,D7); // LCD Instanziierenvoid setup(){
myOwnKeyPad.setDebounceTime(500); // Prellzeit auf 500ms setzen
lcd.begin(COLS, ROWS); // Anzahl der Spalten und Zeilen
startSequence(); // Aufruf der Startsequenz
}void loop(){
char myKey = myOwnKeyPad.readKey(); // Abfragen des gedrückten Tasters
if (myKey != KEY_NOT_PRESSED){ // Abfragen ob irgendein Taster gedrückt ist
Eingabe[stelle] = myKey;
stelle++;
lcd.print(myKey); // Taste im LCD anzeigen
}
if (stelle == int(log10(CODE))+1){
int a = atoi(Eingabe);
if ( a == CODE){
lcd.clear(); // LCD Anzeige löschen
lcd.print("Code zugelassen"); // Ausgabe an das LCD Display
delay(2000); // 2 Sekunden warten
stelle = 0;
startSequence(); // Startsequenz aufrufen
}
else if( a != CODE){
lcd.setCursor(0,1); // Cursor in die 1. Zeile positionieren
lcd.print("Code verweigert"); // Ausgabe an das LCD Display
lcd.setCursor(0,0);
}
else{
lcd.setCursor(0,1); // Cursor in die 2. Zeile positionieren
lcd.print("Code verweigert"); // Ausgabe an das LCD Display
lcd.setCursor(0,0);
}
lcd.setCursor(2,0); // Cursor an die 3. Stelle in der 1. Zeile positionierenstelle = 0;
}
}void startSequence(){
lcd.clear(); // Display Anzeige löschen
lcd.print("TEST FUER"); // Ausgabe an das LCD Display
lcd.setCursor(0,1); // Cursor in die 2. Zeile positionieren
lcd.print(" AUSBILDUNG");
delay(2000); // 4 Sekunden warten
lcd.clear(); // LCD Anzeige löschen
}
Die Library für das Keypad liefert mir folgende Werte zurück je nachdem welche Taste gedrückt ist:
nichts gedrückt - KEY_NOT_PRESSED
0 - KEY_0
1 - KEY_1
2 - KEY_2
3 - KEY_3
4 - KEY_4
5 - KEY_5
6 - KEY_6
7 - KEY_7
8 - KEY_8
9 - KEY_9
- KEY_hash
-
- KEY_star
Wie man nun mit den eingelesenen Werten arbeitet, bzw. sie mit dem vorgegebenen Kennwort zu vergleichen ist mir soweit eigentlich schon gelungen (zumindest einigermaßen). Jetzt möchte ich das wenn die Eingabe: #100 ist das man in eine bestimmte andere Menüebene kommt. Die Ebene erstellen und so klappt auch alles. Ich habe nur an folgender Stelle ein Problem:
Wie kann ich die beiden Zeichen: # , * einlesen? Wenn ich zum Beispiel oben in dem Programmcode meinen CODE von der aktuellen Zahl 9200 zum Beispiel in #100 ändere kommt eine Fehlermeldung. Ich kenn mich mit der Materie noch nicht richtig aus deshalb kann ich mir nicht so richtig helfen. Ich vermute es hat was mit dem Datentyp der Variablen CODE zu tun. Wenn ja welchen Datentyp müsste ich nehmen?
Gruß,
Tobias