Hi
Ich wollte ein einfaches kleines digitales Schloss programmieren. Ist die eingegebene vierstellige Kombination Richtig leuchtet eine grüne LED und es gibt einen Piepton und wenn die Eingabe Falsch war Leuchtet die Rote LED und es ertönt einen anderer Ton. Das Codeschloss besteht dabei aus vier Buttons also den Zahlen 1-4. Zusätzlich soll bei 3x falscher Codeeingabe der ein Alarmton inklusive Blinklicht ausgelöst werden.
Leider Funktioniert mein Code nicht korrekt und ich finde den Fehler nicht. Der Compiler gibt mir keinen Fehler aus, ich vermute daher einen Fehler in der Logik des Programmes. Danke bereits im voraus für Hilfe.
// Knöpfe weleche gedrückt werden
int eingabe[4];
// Gesetztes Passwort
int passwort[4];
// Löscht die aktuelle Eingabe
int clear;
// Eingabe überprüfungs Variable
boolean invalid = false;
// Zählungsvariable zur Einlesung
int count = 1;
// Variable um einen Passwort Check durchzuführen
boolean check = false;
//Variable für 3x Falsches Passwort
int alarm = 0;
void
setup()
{
// Inizialisierung der Schalter
pinMode(13, INPUT);
pinMode(12, INPUT);
pinMode(11, INPUT);
pinMode(10, INPUT);
// LEDs
pinMode(7, OUTPUT); // Rote LED
pinMode(8, OUTPUT); // Grüne LED
// Lautsprecher
pinMode(4, OUTPUT);
// Clear Button
pinMode(2, INPUT);
// Inizialisierung
passwort[0] = 1;
passwort[1] = 2;
passwort[2] = 3;
passwort[3] = 4;
eingabe[0] = 1;
eingabe[1] = 2;
eingabe[2] = 3;
eingabe[3] = 4;
}
//Überprüft die Tasteneingabe es müssen 4 Knöpfe gedrückt worden sein
void
uberpruefe(int tasteneingabe)
{
if (count == 1) {
passwort[0] = tasteneingabe;
count++;
}
for (int i = 1; i < sizeof(passwort) / sizeof(passwort[0]); i++) {
passwort[i] = tasteneingabe;
count++;
}
if (count == 4) {
count = 1;
check = true;
}
}
void
loop()
{
//Benutzer eingabe B1
if (digitalRead(13) == HIGH) {
uberpruefe(1);
}
//Benutzer eingabe B1
if (digitalRead(12) == HIGH) {
uberpruefe(2);
}
//Benutzer eingabe B1
if (digitalRead(11) == HIGH) {
uberpruefe(3);
}
//Benutzer eingabe B1
if (digitalRead(10) == HIGH) {
uberpruefe(4);
}
// Passwort Korrekt?
if (check) {
for (int i = 0; i < sizeof(passwort) / sizeof(passwort[0] - 1);
i++)
{
if (passwort[i] == eingabe[i]) {
}
else {
invalid = true;
alarm++;
}
}
//3x Falsches Passwort Alarm
if(alarm = 3);{
tone(4, 50, 1000);
digitalWrite(7, LOW);
delay(1000);
tone(4, 50, 1000);
digitalWrite(7, HIGH);
delay(1000);
tone(4, 50, 1000);
digitalWrite(7, LOW);
delay(1000);
digitalWrite(7, HIGH);
alarm = 0;
}
//Korrektes Passwort
if (invalid == false) {
digitalWrite(8, LOW);
digitalWrite(7, HIGH);
tone(4, 100, 1000);
delay(5000);
digitalWrite(8, HIGH);
digitalWrite(7, LOW);
tone(4, 150, 1000);
}
//1x falsches Passwort
else {
tone(4, 50, 1000);
delay(1000);
}
}
}