1
57
58#include <Wire.h>
59#include <LiquidCrystal_I2C.h>
60#include <Adafruit_Fingerprint.h>
61#include <SoftwareSerial.h>
62
63
64SoftwareSerial mySerial(2, 3);
65LiquidCrystal_I2C lcd(0x27, 16, 2);
66Adafruit_Fingerprint finger(&mySerial);
67
68const int buzzerPin = 8;
69const int relayPin = 7;
70const int greenLEDPin = 9;
71const int redLEDPin = 10;
72
73
74byte stopSign1[8] = {
75 0b00000,
76 0b01110,
77 0b11111,
78 0b11111,
79 0b11111,
80 0b01110,
81 0b00000,
82 0b00000
83};
84
85byte stopSign2[8] = {
86 0b00000,
87 0b00000,
88 0b01110,
89 0b11111,
90 0b11111,
91 0b01110,
92 0b00000,
93 0b00000
94};
95
96byte arrow1[8] = {
97 0b00000,
98 0b00000,
99 0b00000,
100 0b11111,
101 0b01110,
102 0b00100,
103 0b00000,
104 0b00000
105};
106
107byte arrow2[8] = {
108 0b00000,
109 0b00000,
110 0b11111,
111 0b11111,
112 0b01110,
113 0b00100,
114 0b00000,
115 0b00000
116};
117
118void setup() {
119
120 Serial.begin(9600);
121
122
123 lcd.init();
124 lcd.backlight();
125 lcd.setCursor(0, 0);
126 lcd.print("VideotronicMaker");
127 lcd.setCursor(0, 1);
128 lcd.print("Touch Sensor");
129
130
131 pinMode(buzzerPin, OUTPUT);
132 pinMode(relayPin, OUTPUT);
133 pinMode(greenLEDPin, OUTPUT);
134 pinMode(redLEDPin, OUTPUT);
135
136
137 mySerial.begin(57600);
138 finger.begin(57600);
139
140
141 if (finger.verifyPassword()) {
142 lcd.setCursor(0, 1);
143 lcd.print(" ");
144 lcd.setCursor(0, 1);
145 lcd.print("Sensor ready");
146 Serial.println("Fingerprint sensor is ready.");
147 } else {
148 lcd.setCursor(0, 1);
149 lcd.print(" ");
150 lcd.setCursor(0, 1);
151 lcd.print("Init error");
152 Serial.println("Fingerprint sensor initialization failed.");
153 }
154
155
156 lcd.createChar(0, stopSign1);
157 lcd.createChar(1, stopSign2);
158 lcd.createChar(2, arrow1);
159 lcd.createChar(3, arrow2);
160
161 delay(2000);
162 resetState();
163}
164
165void loop() {
166
167 lcd.setCursor(0, 0);
168 lcd.print("VideotronicMaker");
169 lcd.setCursor(0, 1);
170 lcd.print("Touch Sensor");
171
172
173 if (finger.getImage() == FINGERPRINT_OK) {
174 int id = getFingerprintIDez();
175 if (id == -1) {
176 handleAccessDenied();
177 } else {
178 handleAccessGranted();
179 }
180
181
182 resetState();
183 }
184
185 delay(100);
186}
187
188void handleAccessDenied() {
189
190 digitalWrite(relayPin, LOW);
191 digitalWrite(redLEDPin, HIGH);
192 digitalWrite(greenLEDPin, LOW);
193 lcd.clear();
194 lcd.setCursor(0, 0);
195 lcd.print("Access Denied");
196 Serial.println("Access Denied - Unauthorized fingerprint.");
197
198
199 for (int i = 0; i < 16; i++) {
200 lcd.setCursor(i, 1);
201 lcd.write(byte(i % 2));
202 delay(150);
203 }
204
205
206 for (int i = 0; i < 3; i++) {
207 tone(buzzerPin, 1000, 200);
208 delay(300);
209 }
210 delay(2000);
211}
212
213void handleAccessGranted() {
214
215 digitalWrite(relayPin, HIGH);
216 digitalWrite(redLEDPin, LOW);
217 digitalWrite(greenLEDPin, HIGH);
218 lcd.clear();
219 lcd.setCursor(0, 0);
220 lcd.print("Access Granted");
221 Serial.println("Access Granted - Authorized fingerprint.");
222 tone(buzzerPin, 1000, 3000);
223
224
225 for (int i = 0; i < 16; i++) {
226 lcd.setCursor(i, 1);
227 lcd.write(byte(2 + (i % 2)));
228 delay(150);
229 }
230
231 delay(3000);
232}
233
234void resetState() {
235
236 digitalWrite(relayPin, LOW);
237 digitalWrite(redLEDPin, LOW);
238 digitalWrite(greenLEDPin, LOW);
239 lcd.clear();
240 lcd.setCursor(0, 0);
241 lcd.print("VideotronicMaker");
242 lcd.setCursor(0, 1);
243 lcd.print("Touch Sensor");
244 delay(2000);
245}
246
247
248int getFingerprintIDez() {
249 uint8_t p = finger.image2Tz();
250 if (p != FINGERPRINT_OK) return -1;
251
252 p = finger.fingerFastSearch();
253 if (p != FINGERPRINT_OK) return -1;
254
255
256 Serial.print("Fingerprint ID: ");
257 Serial.println(finger.fingerID);
258 return finger.fingerID;
259}
saaim___
4 days ago
bro why is there not a youtue video for this please reply sooon