#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
Servo servo_3;
String item;
volatile int A;
LiquidCrystal_I2C mylcd(0x27,16,2);
const byte KEYPAD_4_4_ROWS = 4;
const byte KEYPAD_4_4_COLS = 4;
char KEYPAD_4_4_hexaKeys[KEYPAD_4_4_ROWS][KEYPAD_4_4_COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte KEYPAD_4_4_rowPins[KEYPAD_4_4_ROWS] = {8, 7, 6, 5};
byte KEYPAD_4_4_colPins[KEYPAD_4_4_COLS] = {4, 2, 1, 0};
Keypad KEYPAD_4_4 = Keypad(makeKeymap(KEYPAD_4_4_hexaKeys), KEYPAD_4_4_rowPins, KEYPAD_4_4_colPins, KEYPAD_4_4_ROWS, KEYPAD_4_4_COLS);
void setup(){
servo_3.attach(3);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
item = "";
A = 0;
mylcd.init();
mylcd.backlight();
Serial.begin(9600);
pinMode(9, OUTPUT);
servo_3.write(90);
delay(0);
analogWrite(10, 0);
analogWrite(11, 0);
analogWrite(9, 0);
}
void loop(){
while (String(item).length() < 5) {
item = String(item) + String(String(KEYPAD_4_4.getKey()));
mylcd.setCursor(1-1, 1-1);
mylcd.print("input");
mylcd.setCursor(1-1, 2-1);
mylcd.print(item);
}
if (item == "098A7") {
mylcd.clear();
mylcd.setCursor(1-1, 1-1);
mylcd.print("right");
servo_3.write(180);
delay(0);
analogWrite(10, 255);
delay(1000);
servo_3.write(90);
delay(0);
analogWrite(10, 0);
mylcd.clear();
item = "";
} else {
mylcd.setCursor(1-1, 1-1);
mylcd.print("wrong");
analogWrite(11, 255);
tone(12,131);
delay(1000);
analogWrite(11, 0);
noTone(12);
mylcd.clear();
item = "";
A = A + 1;
}
if (A > 2) {
mylcd.clear();
mylcd.setCursor(1-1, 1-1);
mylcd.print("try again");
analogWrite(11, 255);
tone(12,131);
delay(1000);
analogWrite(11, 0);
noTone(12);
mylcd.clear();
delay(10000);
item = "";
A = 0;
}
}