Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. #include <LiquidCrystal.h>
  2. #include <Keypad.h>
  3.  
  4. #define red 42
  5. #define green 50
  6.  
  7. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
  8.  
  9. const byte ROWS = 4;
  10. const byte COLS = 4;
  11.  
  12. char keys[ROWS][COLS] =
  13. { {'1','2','3','A'},
  14. {'4','5','6','B'},
  15. {'7','8','9','C'},
  16. {'*','0','#','D'} };
  17.  
  18. byte rowPins[ROWS] = {22, 23, 24, 25};
  19. byte colPins[COLS] = {26, 27, 28, 29};
  20.  
  21. bool locked = true;
  22.  
  23. Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
  24.  
  25. String code;
  26. String input = "";
  27.  
  28. void setup() {
  29. Serial.begin(9600);
  30. pinMode(red, OUTPUT);
  31. pinMode(green, OUTPUT);
  32. lcd.begin(16, 2);
  33. lcd.clear();
  34. updateLed();
  35. }
  36.  
  37. void loop() {
  38. if (Serial.available() > 0) {
  39. code = Serial.readString();
  40. Serial.print("Code set: ");
  41. Serial.print(code);
  42. Serial.print("\n");
  43.  
  44. lcd.clear();
  45. lcd.write("Code set!");
  46. delay(1500);
  47. lcd.clear();
  48. }
  49.  
  50. char key = keypad.getKey();
  51.  
  52. if (key != NO_KEY) {
  53. switch (key) {
  54. case '*':
  55. lock();
  56. return;
  57. case '#':
  58. if (input == code) {
  59. open();
  60. } else {
  61. lcd.clear();
  62. lcd.write("Wrong code!");
  63. delay(1500);
  64. }
  65. clear();
  66. return;
  67. case 'D':
  68. clear();
  69. return;
  70. }
  71.  
  72. if (input.length() < 4) {
  73. input += key;
  74. lcd.write(key);
  75. Serial.println(input);
  76. }
  77. }
  78.  
  79. delay(100);
  80. }
  81.  
  82. void clear() {
  83. input = "";
  84. lcd.clear();
  85. }
  86.  
  87. void open() {
  88. locked = false;
  89. updateLed();
  90. lcd.clear();
  91. lcd.write("Lock opened!");
  92. delay(1500);
  93. lcd.clear();
  94.  
  95. }
  96.  
  97. void lock() {
  98. locked = true;
  99. updateLed();
  100. lcd.clear();
  101. lcd.write("Locked!");
  102. delay(1500);
  103. lcd.clear();
  104. }
  105.  
  106. void updateLed() {
  107. digitalWrite(green, !locked);
  108. digitalWrite(red, locked);
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement