Кодовый замок
- Войдите на сайт для отправки комментариев
Пнд, 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();
О, да! Спасибо большое! Помогло!