Was muss ich an meinem Arduino-Programm ändern?

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);
}
Arduino, Code, Programmiersprache, Arduino Uno, Arduino IDE

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);
 }
}
Arduino, Code, Programmiersprache, Arduino Uno, Arduino IDE
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.