void loop() { // gedrückte Taste lesen Tastenfeld.tick(); while (Tastenfeld.available()) { keypadEvent Taste = Tastenfeld.read(); // wenn die Taste losgelassen wurde // Wert abgefragter Taste zu char umwandeln if (Taste.bit.EVENT == KEY_JUST_RELEASED) { lcd.setCursor(0, 0); lcd.print("Pin eingeben: "); // Zeilen LCD löschen ZeileLoeschen(1); ZeileLoeschen(3); Motor.write(0); // eingegebenes Zeichen an der aktuellen Position speichern Zeichen[Position] = (char)Taste.bit.KEY; // Zeichen anzeigen Serial.print(Zeichen[Position]); lcd.setCursor(PositionSpalte, 2); lcd.print(Zeichen[Position]); // nächstes Zeichen -> Position erhöhen // Position Spalte LCD erhöhen Position++; PositionSpalte++; // Korrektur ASCII-Wert 42 = * if (Taste.bit.KEY == 42) { // char-Array Zeichen leeren for (int i = 0; i < sizeof(Zeichen); i++) { Zeichen[i] = NULL; } // Variablen zurücksetzen, Zeilen LCD löschen Position = 0; PositionSpalte = 0; ZeileLoeschen(0); ZeileLoeschen(2); Serial.println("\tKorrektur: "); lcd.setCursor(0, 0); lcd.print("Korrektur: "); } // Zeichen ASCII-Wert 35 = # if (Taste.bit.KEY == 35) { // char-Array in String umwandeln Vergleich = String(Zeichen); // letzte Zeichen des Strings sind 0 und # -> müssen entfernt werden Vergleich = Vergleich.substring(0, Vergleich.length() - 2); Serial.println(); Serial.print(Vergleich); // Zeilen LCD löschen ZeileLoeschen(0); ZeileLoeschen(2); lcd.setCursor(0, 0); lcd.print("Pin: " + Vergleich + " "); // Eingabe mit Pin vergleichen if (Vergleich == Pin) { Serial.println("\korrekter Pin - Schranke \u00f6ffnen!"); lcd.setCursor(0, 1); lcd.print("-> korrekter Pin!"); delay(2000); lcd.setCursor(0, 1); lcd.print("Schranke \357ffnen!"); Motor.write(90); } else { Serial.println("\tFalscher Pin - kein Zugriff"); lcd.setCursor(0, 1); lcd.print("-> falscher Pin!"); } // Variable zurücksetzen Position = 0; PositionSpalte = 0; // neuen Pin erstellen neuerPin(); } } } }