#include <Keypad.h>
//Hier wird die größe des Keypads definiert
#include <Servo.h>
Servo servoblau; //Servo wird ab jetzt mit „servoblau“ angesprochen
char* password = "123A"; //Das Passwort wird festgelegt. In diesem Beispiel„123“
int position = 0;
const byte COLS = 4; //4 Spalten
const byte ROWS = 4; //4 Zeilen
//Die Ziffern und Zeichen des Keypads werden eingegeben:
char hexaKeys[ROWS][COLS]={
{'D','#','0','*'},
{'C','9','8','7'},
{'B','6','5','4'},
{'A','3','2','1'}
};
byte colPins[COLS] = {5,4,3,2}; //Definition der Pins für die 4 Spalten
byte rowPins[ROWS] = {9,8,7,6};//Definition der Pins für die 4 Zeilen
char Taste; //Taste ist die Variable für die jeweils gedrückte Taste.
Keypad Tastenfeld = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); //Das Keypad kann absofort mit "Tastenfeld" angesprochen werden
int roteLED = 12; //Die rote LED ist an Pin 12 angeschlossen
int grueneLED = 13; //Die grüne LED wird an Pin 13 angeschlossen
void setup()
{
pinMode(roteLED, OUTPUT); //Die LEDs werden als Ausgang festgelegt
pinMode(grueneLED, OUTPUT);
servoblau.attach(11); //Der Servo ist an Pin 11 angeschlossen
setLocked(true);
Serial.begin(9600);
}
void loop()
{
Taste = Tastenfeld.getKey(); //Mit Unter der Variablen pressedKey entspricht der gedrückten Taste
if (Taste)
{ //Wenn eine Taste gedrückt wurde
Serial.print("Die Taste ");
Serial.print(Taste);
//Serial.print(password);
Serial.print(" wurde gedrueckt");
Serial.println(); //Teile uns am Serial Monitor die gedrückte Taste mit
}
//char key = keypad.getKey();
if (Taste == '*' || Taste == '#') //wenn das Schloss entsperrt ist kann es mit der Taste „*“ oder „#“ wieder gesperrt werden
{
position = 0;
setLocked(true); //Schloss sperren wenn * oder # gedrückt wurde
}
if (Taste == password[position])
{
position ++;
}
if (position == 4) //Diese Zeile gibt die Länge des Passwortes an. In unserem Fall 3 Stellen.
{
setLocked(false);
}
delay(100);
}
void setLocked(int locked)
{
if (locked) // Wenn das Schloss gesperrt ist soll..
{
digitalWrite(roteLED, HIGH); //..die rote LED leuchten..
digitalWrite(grueneLED, LOW); //..die grüner LED nicht leuchten..
servoblau.write(90); //und der Servo soll 0 Grad ansteuern.
}
else //wenn das Schloss entsperrt ist soll..
{
digitalWrite(roteLED, LOW); //..die rote LED nicht leuchten..
digitalWrite(grueneLED, HIGH); //..die grüne LED leuchten..
servoblau.write(0); //..und der Servo 90 Grad ansteuern.
}
}