Простой пароль на Arduino
- Войдите на сайт для отправки комментариев
Чт, 06/11/2014 - 15:45
Доброго времени суток. Я новичок в 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);
}
}
}
в setup вводи пароль
а в loop крути результат
Happy, попробуйте в loop добавить
keypad.getKey();
Работает, спасибо.