Простой пароль на Arduino

Happy
Offline
Зарегистрирован: 06.11.2014

Доброго времени суток. Я новичок в Arduino, поэтому заранее прошу прошения. Написал простенький код для создания пароля с клавой 4х4, а он не фурычит. Я так понимаю он постоянно крутиться в void loop, как это исправиnь не знаю. Кто может подсказать? Спасибо.

#include <Keypad.h>
#include <Password.h>
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

Password password = Password( "1234" );

int alarmCounter = 0;
LiquidCrystal_I2C lcd(0x3f,16,2);

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','F','E','D'}
};
byte rowPins[ROWS] = {11, 10, 9, 8};
byte colPins[COLS] = {7, 6, 5, 4}; 

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup()
{
  lcd.init();
  lcd.backlight();
  keypad.addEventListener(keypadEvent);
}

void loop()
{  
  int chk;
}

void keypadEvent(KeypadEvent key){
  switch (keypad.getState())
  {
  case PRESSED:
  switch (key)
    {
      case 'B': 
      guessPassword();
      break;
      case 'A': 
      password.reset();
      break;
      
      default :      
      if (int(key) != 0) 
      { 
        lcd.setCursor(1,0);
        lcd.print("Password:");
        lcd.setCursor(0,1);
        lcd.print("*");
      }
      password.append(key);
     }
   }
}
void guessPassword()
{
  if (password.evaluate())
  {
    lcd.setCursor(0,0);
    lcd.print("Success");
    delay(2000);
    password.reset();
    alarmCounter = 0;
  }
  else
    {
    lcd.setCursor(0,0);
    lcd.print("Wrong password");
    lcd.setCursor(0,1);
    lcd.print("Try again");
    delay(3000);
    password.reset();
    alarmCounter++;
    if (alarmCounter >= 3)
    {
      lcd.setCursor(0,0);
      lcd.print("Wrong password!");
      lcd.setCursor(0,1);
      lcd.print("Wait 5 min");
      delay(30000);
    }
     
    }
}

 

kayot
kayot аватар
Offline
Зарегистрирован: 11.04.2014

в setup вводи пароль

 а в loop крути результат

toc
Offline
Зарегистрирован: 09.02.2013

Happy, попробуйте в loop добавить
keypad.getKey();

Happy
Offline
Зарегистрирован: 06.11.2014

Работает, спасибо.