Professional Documents
Culture Documents
Lamp Iran 123
Lamp Iran 123
1. #include <SoftwareSerial.h>
2. #include <EEPROM.h>
3. #include <Adafruit_Fingerprint.h>
4. int relay = 6;
5. int buzzer = 5;
6. byte isi;
7. String data;
8. int count_salah = 0;
9. int count_benar = 0;
10. byte alamat = 0;
11. byte id;
12. SoftwareSerial mySerial(3, 2);
13. Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
14. //--------------------------------------------- setup ---------------------------
----------------------------------
15. void setup()
16. {
17. pinMode(relay, OUTPUT);
18. pinMode(buzzer, OUTPUT);
19. digitalWrite(relay, HIGH);
20. Serial.begin(9600);
21. delay(100);
22. finger.begin(57600);
23. isi = EEPROM.read(alamat);
24. Serial.println(isi);
25. }
26.
27. //------------------------------------ loop -------------------------------
28.
29. void loop() // run over and over again
30. {
31.
32. Serial.print (" ");
33. delay(100);
34. GetFingerprintID();
35. delay(50);
36. while (Serial.available())
37. {
38. delay(10);
39. char c = Serial.read();
40. data = c;
41. bluetooth();
42. }
43. }
44.
45. //------------------------ fungsi pengecekan sidik jari --------------------
46.
47. uint8_t GetFingerprintID() {
48.
49. uint8_t p = finger.getImage();
50. switch (p) {
51. case FINGERPRINT_OK:
52. break;
53. case FINGERPRINT_NOFINGER:
54. return p;
55. case FINGERPRINT_PACKETRECIEVEERR:
56. return p;
57. case FINGERPRINT_IMAGEFAIL:
58. return p;
59. default:
60. return p;
61. }
62.
63. // OK success!
64.
65. p = finger.image2Tz();
66. switch (p) {
67. case FINGERPRINT_OK:
68. break;
69. case FINGERPRINT_IMAGEMESS:
70. return p;
71. case FINGERPRINT_PACKETRECIEVEERR:
72. return p;
73. case FINGERPRINT_FEATUREFAIL:
74. return p;
75. case FINGERPRINT_INVALIDIMAGE:
76. return p;
77. default:
78. return p;
79. }
80.
81. // OK converted!
82. p = finger.fingerFastSearch();
83. if (p == FINGERPRINT_OK) {
84. count_benar ++;
85. if (count_benar > 1) {
86. count_benar = 0;
87. }
88. if (count_benar == 1) {
89. digitalWrite(relay, LOW);
90. }
91. else {
92. digitalWrite(relay, HIGH);
93. }
94. count_salah = 0;
95. } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
96. return p;
97. } else if (p == FINGERPRINT_NOTFOUND) {
98. tone(buzzer, 2000);
99. delay(1000);
100. noTone(buzzer);
101. delay(500);
102. count_salah ++;
103.
104. if (count_salah == 4)count_salah = 0;
105. if (count_salah > 2){
106. for (int i = 0; i < 10; i++) {
107. tone(buzzer, 2000);
108. delay(1000);
109. noTone(buzzer);
110. delay(500);
111. }
112. }
113. return p;
114. } else {
115. return p;
116. }
117. return loop;
118. }
119. // ----------------- FUNGSI BLUETOOTH --------------------
120.
121. void bluetooth() {
122. finger.getTemplateCount();
123.
124. if (data == "a")
125. {
126. count_benar = 1;
127. }
128. else if (data == "b")
129. {
130. count_benar = 2;
131. }
132. else if (data == "c")
133. {
134.
135. if (finger.templateCount > 9){
136. Serial.print(" sidik jari penuh");
137. delay (2000);
138. Serial.print(" hapus terlebih dahulu");
139. }else{
140. getFingerprintEnroll();
141. }
142. }
143. else if (data == "d")
144. {
145. if (finger.templateCount == 0 ){
146. Serial.print (" tidak ada sidik jari terdaftar ");
147. delay (3000);
148. }else{
149. isi-=1;
150. deleteFingerprint();
151. }
152. }
153. else if (data == "e")
154. {
155. char buffer[100];
156. sprintf(buffer," jumlah jari terdaftar : %d ",finger.templateCount);
157. Serial.println(buffer);
158. delay (3000);
159. }
160.
161. data = "";
162.
163. if (count_benar > 1) {
164. count_benar = 0;
165. }
166. if (count_benar == 1) {
167. digitalWrite(relay, LOW);
168. }
169. else {
170. digitalWrite(relay, HIGH);
171. }
172. }
173.
174. // ------------------ pendaftaran sidik jari -----------------------
175.
176. uint8_t getFingerprintEnroll() {
177. digitalWrite (buzzer, 1000);
178. delay (500);
179. digitalWrite (buzzer, LOW);
180. int p = -1;
181. Serial.println(" tempelkan sidik jari");
182. while (p != FINGERPRINT_OK) {
183. p = finger.getImage();
184. switch (p) {
185. case FINGERPRINT_OK:
186. break;
187. case FINGERPRINT_NOFINGER:
188. break;
189. case FINGERPRINT_PACKETRECIEVEERR:
190. break;
191. case FINGERPRINT_IMAGEFAIL:
192. break;
193. default:
194. break;
195. }
196. }
197. // OK success!
198.
199. p = finger.image2Tz(1);
200. switch (p) {
201. case FINGERPRINT_OK:
202.
203. break;
204. case FINGERPRINT_IMAGEMESS:
205. return p;
206. case FINGERPRINT_PACKETRECIEVEERR:
207. return p;
208. case FINGERPRINT_FEATUREFAIL:
209. return p;
210. case FINGERPRINT_INVALIDIMAGE:
211. return p;
212. default:
213. return p;
214. }
215. digitalWrite (buzzer, 1000);
216. delay (500);
217. digitalWrite (buzzer, LOW);
218. Serial.println(" lepaskan jari");
219. delay(3000);
220. p = 0;
221. while (p != FINGERPRINT_NOFINGER) {
222. p = finger.getImage();
223. }
224. p = -1;
225. digitalWrite (buzzer, 1000);
226. delay (500);
227. digitalWrite (buzzer, LOW);
228. Serial.println(" tempelkan jari yang sama");
229. while (p != FINGERPRINT_OK) {
230. p = finger.getImage();
231. switch (p) {
232. case FINGERPRINT_OK:
233. break;
234. case FINGERPRINT_NOFINGER:
235. break;
236. case FINGERPRINT_PACKETRECIEVEERR:
237. break;
238. case FINGERPRINT_IMAGEFAIL:
239. break;
240. default:
241. break;
242. }
243. }
244. // OK success!
245. p = finger.image2Tz(2);
246. switch (p) {
247. case FINGERPRINT_OK:
248.
249. break;
250. case FINGERPRINT_IMAGEMESS:
251. return p;
252. case FINGERPRINT_PACKETRECIEVEERR:
253. return p;
254. case FINGERPRINT_FEATUREFAIL:
255. return p;
256. case FINGERPRINT_INVALIDIMAGE:
257. return p;
258. default:
259. return p;
260. }
261. // OK converted!
262.
263. p = finger.createModel();
264. if (p == FINGERPRINT_OK) {
265. } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
266. return p;
267. } else if (p == FINGERPRINT_ENROLLMISMATCH) {
268. Serial.println(" sidik jari salah");
269. delay (3000);
270. return p;
271. } else {
272. return p;
273. }
274. p = finger.storeModel(isi);
275. if (p == FINGERPRINT_OK) {
276. isi += 1;
277. EEPROM.write(alamat, isi);
278. Serial.println(" tersimpan");
279. delay (3000);
280. } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
281. return p;
282. } else if (p == FINGERPRINT_BADLOCATION) {
283. return p;
284. } else if (p == FINGERPRINT_FLASHERR) {
285. return p;
286. } else {
287. return p;
288. }
289. }
290. //------------------ fungsi penghapusan sidik jari -----------------
291.
292. uint8_t deleteFingerprint() {
293. delay(2000);
294. uint8_t p = -1;
295. p = finger.deleteModel(isi);
296.
297. if (p == FINGERPRINT_OK) {
298. digitalWrite (buzzer, 1000);
299. delay (500);
300. digitalWrite (buzzer, LOW);
301. EEPROM.write(alamat, isi);
302. Serial.println(" sidik jari terhapus");
303. delay (3000);
304. } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
305. return p;
306. } else if (p == FINGERPRINT_BADLOCATION) {
307. return p;
308. } else if (p == FINGERPRINT_FLASHERR) {
309. return p;
310. } else {
311. return p;
312. }
313.
314. }
window 1
window 2
window 3
window 4