Кодовый замок
- Войдите на сайт для отправки комментариев
Пнд, 04/12/2017 - 02:49
Есть скетч для Arduino под кодовый замок. Скомпилировал и залил на Mega 2560. Код по умолчанию "1234". При вводе верного кода срабатывает через раз, то есть первый раз - успех, второй раз - ошибка. И так постоянно. Можете сказать в чём может быть проблема?
Часть кода:
void keypadEvent(KeypadEvent eKey)
{
switch (keypad.getState())
{
case PRESSED:
int i;
for ( i = 1; i <= 1; i++ )
{
digitalWrite(buzzer, HIGH);
delay(50);
digitalWrite(buzzer, LOW);
delay(50);
}
Serial.print("Pressed: ");
Serial.println(eKey);
switch (eKey)
{
/*
case '#':
break;
case '*':
break;
*/
default:
ilosc = ilosc + 1;
password.append(eKey);
}
//Serial.println(ilosc);
if (ilosc == 1)
{
lcd.clear();
lcd.setCursor(1, 0);
lcd.print(" < PIN >");
lcd.setCursor(0, 1);
lcd.print("*_");
}
if (ilosc == 2)
{
lcd.clear();
lcd.setCursor(1, 0);
lcd.print(" < PIN >");
lcd.setCursor(0, 1);
lcd.print("**_");
}
if (ilosc == 3)
{
lcd.clear();
lcd.setCursor(1, 0);
lcd.print(" < PIN >");
lcd.setCursor(0, 1);
lcd.print("***_");
}
if (ilosc == 4)
{
lcd.clear();
lcd.setCursor(1, 0);
lcd.print(" < PIN >");
lcd.setCursor(0, 1);
lcd.print("****_");
}
if (ilosc == 5)
{
lcd.clear();
lcd.setCursor(1, 0);
lcd.print(" < PIN >");
lcd.setCursor(0, 1);
lcd.print("*****_");
}
if (ilosc == 6)
{
lcd.clear();
lcd.setCursor(1, 0);
lcd.print(" < PIN >");
lcd.setCursor(0, 1);
lcd.print("******_");
}
if (ilosc == 7)
{
lcd.clear();
lcd.setCursor(1, 0);
lcd.print(" < PIN >");
lcd.setCursor(0, 1);
lcd.print("*******_");
}
if (ilosc == 8)
{
lcd.clear();
lcd.setCursor(1, 0);
lcd.print(" < PIN >");
lcd.setCursor(0, 1);
lcd.print("********");
}
if (ilosc == dlugosc)
{
delay(250);
checkPassword();
ilosc = 0;
}
}
}
void checkPassword()
{
if (password.evaluate())
{
int i;
for ( i = 1; i <= 2; i++ )
{
digitalWrite(buzzer, HIGH);
delay(70);
digitalWrite(buzzer, LOW);
delay(70);
}
ilosc = 0;
Serial.println("Open");
digitalWrite(ledRed, LOW);
digitalWrite(ledGreen, HIGH);
lcd.clear();
lcd.setCursor(6, 0);
lcd.print("Open");
tone(4, 5000, 150); //Звуковой сигнал, оповещающий об открытии замка
servo.write(170); //Замок открывается Servo в положение "Open"
}
else
{
int i;
for ( i = 1; i <= 1; i++ )
{
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
}
ilosc = 0;
password.reset();
Serial.println("Wrong");
digitalWrite(ledGreen, LOW);
digitalWrite(ledRed, HIGH);
lcd.clear();
lcd.setCursor(5, 0);
lcd.print("Wrong");
lcd.setCursor(4, 1);
lcd.print("Password");
delay(2000);
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Authorize");
}
}
password.reset();
password.reset();
О, да! Спасибо большое! Помогло!