-
Notifications
You must be signed in to change notification settings - Fork 0
/
arduino garage door code
146 lines (122 loc) · 3.39 KB
/
arduino garage door code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*
LiquidCrystal Library - Hello World
Demonstrates the use a 16x2 LCD display. The LiquidCrystal
library works with all LCD displays that are compatible with the
Hitachi HD44780 driver. There are many of them out there, and you
can usually tell them by the 16-pin interface.
This sketch prints "Hello World!" to the LCD
and shows the time.
The circuit:
* LCD RS pin to digital pin 12
* LCD Enable pin to digital pin 11
* LCD D4 pin to digital pin 28
* LCD D5 pin to digital pin 30
* LCD D6 pin to digital pin 32
* LCD D7 pin to digital pin 34
* LCD R/W pin to ground
* LCD VSS pin to ground
* LCD VCC pin to 5V
* 10K pot resistor:
* ends to +5V and ground
* wiper to LCD VO pin (pin 3)
* Lock relay pin 52, normally low (off)
* pot is handled
* red 5v one side
* black one side
* purple - middle (pin 3)
Library originally added 18 Apr 2008
by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modified 22 Nov 2010
by Tom Igoe
modified 7 Nov 2016
by Arturo Guadalupi
modified 25th October 2021
by ssj
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/LiquidCrystalHelloWorld
expanded to suit electronic door.
*/
// include the library code:
#include <LiquidCrystal.h>
#include <Keypad.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 28, d5 = 30, d6 = 32, d7 = 34;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// Constants for row and column sizes
const byte ROWS = 4;
const byte COLS = 4;
// Array to represent keys on keypad
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
// Connections to Arduino
byte rowPins[ROWS] = {50, 48, 46, 44};
byte colPins[COLS] = {42, 40, 38, 36};
// Create keypad object
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
#define Password_Length 7
char Data[Password_Length];
char Master[Password_Length] = "cccccc";
int lockOutput = 52;
byte data_count = 0;
void setup() {
// set up the LCD's number of columns and rows:
//lcd.clear();
lcd.begin(20, 4);
// Print a message to the LCD.
lcd.print("*Family access only*");
lcd.setCursor(3, 2);
lcd.print("Enter passcode");
// Set lockOutput as an OUTPUT pin
pinMode(lockOutput, OUTPUT);
digitalWrite(lockOutput, HIGH);
}
void loop() {
char customKey = customKeypad.getKey();
if (customKey){
lcd.setCursor(0, 0);
lcd.print("*Family access only*");
Data[data_count] = customKey;
lcd.setCursor(data_count, 3);
lcd.print(Data[data_count]);
data_count++;
}
// See if we have reached the password length
if (data_count == Password_Length - 1) {
lcd.clear();
if (!strcmp(Data, Master)) {
// Password is correct
lcd.print("Correct");
delay(500);
// Turn on relay for 0.5 seconds
digitalWrite(lockOutput, LOW);
delay(500);
digitalWrite(lockOutput, HIGH);
}
else {
// Password is incorrect
lcd.print("Incorrect");
delay(1000);
}
lcd.clear();
lcd.print("*Family access only*");
lcd.setCursor(3, 2);
lcd.print("Enter passcode");
clearData();
}
}
void clearData() {
// Go through array and clear data
while (data_count != 0) {
Data[data_count--] = 0;
}
return;
}