Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

LAMPIRAN

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

You might also like