Hallo liebe Freunde des Microcontrollers,
da ich wie schon in einem anderen Thread erwähnt, bei mir die Hausrenovierung ansteht, möchte ich ein Zahlenschloss zum öffnen der Haustüre.
Das verzwickte an der Situation ist diese, dass ich oft und lange nicht zuhause bin und anderen Menschen den Zugangscode geben muß.
Deswegen dachte ich an einen Gültigkeitszeitraum wo danach dieser Code ungültig wird.
Quasi ein Mastercode für mich und ein zeitlich begrenzt gültiger Code, den ich auch generieren können muß?
Der momentane Source von meinem Zahlenschloss sieht so aus:
#include <Keypad.h>
char* secretCode = "123456";
int position = 0;
const byte rows = 4;
const byte cols = 3;
char keys[rows][cols] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[rows] = {4, 5, 6, 7};
byte colPins[cols] = {1, 2, 3};
Keypad keypad = Keypad(makeKeymap(keys),
rowPins, colPins,
rows, cols);
int redPin = 8;
int greenPin = 9;
int relais = 10;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(relais, OUTPUT);
setLocked(true);
}
void loop()
{
char key = keypad.getKey();
if (key == '*' || key == '#') {
position = 0;
setLocked(true);
}
if(key >= '0' && key <= '9')
{
if (key == secretCode[position]) {
position++;
}
else
{
position=0;
}
digitalWrite(greenPin, HIGH);
delay(100);
digitalWrite(greenPin, LOW);
}
if (position == 6) {
setLocked(false);
delay(2000);
setLocked(true);
position = 0;
}
delay(50);
}
void setLocked(int locked)
{
if (locked) {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(relais,LOW);
}
else {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(relais,HIGH);
}
}