Was ist falsch an meinem Arduino-Programm?
Bis jetzt bewirkt es, dass, wenn man die Taste 2 oder A drückt, die rote LED leuchtet und ein nehativer Ton erklingt. Mehr nicht.
Eigntlich soll die Schaltung so funktioneren, dass, wenn man den Code 2009 eingibt, die grüne LED leuchtet, ein fröhlicher Ton aus dem Buzzer erklingt und der Servo sich für 50 Sekunden um 90 Grad öffnet. Sollte man den Code falsch eingeben, leuchtet die rote LED, ein negativer Ton erklingt und der Servo bleibt verschlossen.
#include <Keypad.h>
#include <Servo.h>
#define Buzzer 11
Servo Servo;
int roteLED = 12;
int grueneLED = 13;
void setLocked(bool locked)
{
if (locked) {
digitalWrite(roteLED, HIGH);
digitalWrite(grueneLED, LOW);
Servo.write(0);
tone(Buzzer, 400, 500);
delay(500);
noTone(Buzzer);
digitalWrite(roteLED, LOW);
}
else {
digitalWrite(roteLED, LOW);
digitalWrite(grueneLED, HIGH);
Servo.write(90);
tone(Buzzer, 1000, 200);
delay(250);
tone(Buzzer, 1500, 200);
delay(250);
tone(Buzzer, 2000, 200);
delay(250);
noTone(Buzzer);
delay(50000);
Servo.write(0);
}
}
int position = 0;
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte colPins[COLS] = {2, 3, 4, 5};
byte rowPins[ROWS] = {6, 7, 8, 9};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
const char code[5] = "2009";
void setup()
{
pinMode(roteLED, OUTPUT);
pinMode(grueneLED, OUTPUT);
pinMode(Buzzer, OUTPUT);
Servo.attach(10);
setLocked(true);
}
void loop()
{
const char key = keypad.getKey();
if (key == '*'||key == '#') {
position = 0;
setLocked(true);
}
if (key == code[position]) {
position++;
}
else
position = 0;
if (position == 4) {
setLocked(false);
}
delay(100);
}