Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- #include <Keypad.h>
- #define red 42
- #define green 50
- LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
- 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','#','D'} };
- byte rowPins[ROWS] = {22, 23, 24, 25};
- byte colPins[COLS] = {26, 27, 28, 29};
- bool locked = true;
- Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
- String code;
- String input = "";
- void setup() {
- Serial.begin(9600);
- pinMode(red, OUTPUT);
- pinMode(green, OUTPUT);
- lcd.begin(16, 2);
- lcd.clear();
- updateLed();
- }
- void loop() {
- if (Serial.available() > 0) {
- code = Serial.readString();
- Serial.print("Code set: ");
- Serial.print(code);
- Serial.print("\n");
- lcd.clear();
- lcd.write("Code set!");
- delay(1500);
- lcd.clear();
- }
- char key = keypad.getKey();
- if (key != NO_KEY) {
- switch (key) {
- case '*':
- lock();
- return;
- case '#':
- if (input == code) {
- open();
- } else {
- lcd.clear();
- lcd.write("Wrong code!");
- delay(1500);
- }
- clear();
- return;
- case 'D':
- clear();
- return;
- }
- if (input.length() < 4) {
- input += key;
- lcd.write(key);
- Serial.println(input);
- }
- }
- delay(100);
- }
- void clear() {
- input = "";
- lcd.clear();
- }
- void open() {
- locked = false;
- updateLed();
- lcd.clear();
- lcd.write("Lock opened!");
- delay(1500);
- lcd.clear();
- }
- void lock() {
- locked = true;
- updateLed();
- lcd.clear();
- lcd.write("Locked!");
- delay(1500);
- lcd.clear();
- }
- void updateLed() {
- digitalWrite(green, !locked);
- digitalWrite(red, locked);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement