Arduino programm fehler?
Guten Tag,
Ich hätte eine Frage bezüglich meinem Arduino Programmes, unzwar möchte ich, dass die Schaltung so funktiomiert, dass man Auf dem keypad den code 2009 eingeben musst Macht man dies richtig leuchtet die grüne LED, ein fröjlicher Ton ertönt aus dem Buzzer und der Servo öffnet die Tür.
Sollte mam einen falschen code eingeben leichtet die rote LED ein negativer Ton erklingt und der Serbo bewegt sich nicht.
Was habe ich falsch gemacht wie muss das Programm eigntlich aussehen?
Mit Arduino version 1.13.8
Programm:
#include <Keypad.h>
#include <Servo.h>
#define Buzzer 11
Servo myServo;
char password= "2009";
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);
int roteLED = 12;
int grueneLED = 13;
char code[5] = "2009";
void setup() {
pinMode(roteLED, OUTPUT);
pinMode(grueneLED, OUTPUT);
pinMode(Buzzer, OUTPUT);
myServo.attach(10);
setLocked(true);
}
void loop() {
char key = keypad.getKey();
if (key == '*'||key == '#')
{
position = 0;
setLocked(true);
}
if (key == code[position])
{
position++;
}
if(position == 4){
setLocked(false);
}
delay(100);
}
void setLocked(int locked)
{
if (locked)
{
digitalWrite(roteLED, HIGH);
digitalWrite(grueneLED, LOW);
myServo.write(90);
tone(Buzzer, 1000, 200);
delay(250);
tone(Buzzer, 1500, 200);
delay(250);
tone(Buzzer, 2000, 200);
delay(250);
noTone(Buzzer);
}
else
{
digitalWrite(roteLED, LOW);
digitalWrite(grueneLED, HIGH);
myServo.write(0);
tone(Buzzer, 400, 500);
delay(500);
noTone(Buzzer);
}
}