Advertisement
Guest User

Untitled

a guest
Oct 18th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.87 KB | None | 0 0
  1. #include <LiquidCrystal.h>
  2. #include<Servo.h>
  3. #include <Adafruit_Fingerprint.h>
  4. const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
  5. LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
  6. // On Leonardo/Micro or others with hardware serial, use those! #0 is green wire, #1 is white
  7. // uncomment this line:
  8. // #define mySerial Serial1
  9. Servo lock;
  10. // For UNO and others without hardware serial, we must use software serial...
  11. // pin #2 is IN from sensor (GREEN wire)
  12. // pin #3 is OUT from arduino (WHITE wire)
  13. // comment these two lines if using hardware serial
  14. SoftwareSerial mySerial(6, 7);
  15. int resetState = 0;
  16.  
  17. Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
  18.  
  19. int firstsuccess = 0;
  20.  
  21. void setup()
  22. {
  23. //lock.attach(9);
  24. //lock.write(0);
  25. pinMode(13, INPUT);
  26. //digitalWrite(8, LOW);
  27. Serial.begin(9600);
  28. lcd.begin(16, 2);
  29. lcd.clear();
  30. lcd.setCursor(0,0);
  31. lcd.print("Scan 1st Finger");
  32. while (!Serial); // For Yun/Leo/Micro/Zero/...
  33. delay(100);
  34. Serial.println("\n\nAdafruit finger detect test");
  35.  
  36. // set the data rate for the sensor serial port
  37. finger.begin(57600);
  38. delay(5);
  39. if (finger.verifyPassword()) {
  40. Serial.println("Found fingerprint sensor!");
  41. } else {
  42. Serial.println("Did not find fingerprint sensor :(");
  43. while (1) { delay(1); }
  44. }
  45.  
  46. finger.getTemplateCount();
  47. Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
  48. Serial.println("Waiting for valid finger...");
  49. }
  50.  
  51. void(* resetFunc) (void) = 0;
  52.  
  53. void loop() // run over and over again
  54. {
  55. getFingerprintIDez();
  56. //delay(50); //don't ned to run this at full speed.
  57. Serial.print(digitalRead(13));
  58. resetState = digitalRead(13);
  59. if (resetState == HIGH) {
  60. Serial.print("On");
  61. } else {
  62. Serial.print("Off");
  63. }
  64. }
  65.  
  66. uint8_t getFingerprintID() {
  67. uint8_t p = finger.getImage();
  68. switch (p) {
  69. case FINGERPRINT_OK:
  70. Serial.println("Image taken");
  71. break;
  72. case FINGERPRINT_NOFINGER:
  73. Serial.println("No finger detected");
  74. return p;
  75. case FINGERPRINT_PACKETRECIEVEERR:
  76. Serial.println("Communication error");
  77. return p;
  78. case FINGERPRINT_IMAGEFAIL:
  79. Serial.println("Imaging error");
  80. return p;
  81. default:
  82. Serial.println("Unknown error");
  83. return p;
  84. }
  85.  
  86. // OK success!
  87.  
  88. p = finger.image2Tz();
  89. switch (p) {
  90. case FINGERPRINT_OK:
  91. Serial.println("Image converted");
  92. break;
  93. case FINGERPRINT_IMAGEMESS:
  94. Serial.println("Image too messy");
  95. return p;
  96. case FINGERPRINT_PACKETRECIEVEERR:
  97. Serial.println("Communication error");
  98. return p;
  99. case FINGERPRINT_FEATUREFAIL:
  100. Serial.println("Could not find fingerprint features");
  101. return p;
  102. case FINGERPRINT_INVALIDIMAGE:
  103. Serial.println("Could not find fingerprint features");
  104. return p;
  105. default:
  106. Serial.println("Unknown error");
  107. return p;
  108. }
  109.  
  110. // OK converted!
  111. p = finger.fingerFastSearch();
  112. if (p == FINGERPRINT_OK) {
  113. Serial.println("Found a print match!");
  114. } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
  115. Serial.println("Communication error");
  116. return p;
  117. } else if (p == FINGERPRINT_NOTFOUND) {
  118. Serial.println("Did not find a match");
  119. return p;
  120. } else {
  121. Serial.println("Unknown error");
  122. return p;
  123. }
  124.  
  125. // found a match!
  126. Serial.print("Found ID #"); Serial.print(finger.fingerID);
  127. Serial.print(" with confidence of "); Serial.println(finger.confidence);
  128.  
  129. return finger.fingerID;
  130. }
  131.  
  132. // returns -1 if failed, otherwise returns ID #
  133. int getFingerprintIDez() {
  134. uint8_t p = finger.getImage();
  135. if (p != FINGERPRINT_OK) return -1;
  136.  
  137. p = finger.image2Tz();
  138. if (p != FINGERPRINT_OK) return -1;
  139.  
  140. p = finger.fingerFastSearch();
  141. if (p != FINGERPRINT_OK) return -1;
  142.  
  143. // found a match!
  144. if(finger.fingerID == 3 && firstsuccess == 0) {
  145. Serial.print("Found first fingerprint, do the other one now");
  146. firstsuccess = 1;
  147. Serial.print(firstsuccess);
  148. lcd.clear();
  149. lcd.setCursor(0,0);
  150. lcd.print("Finger 1 OK!");
  151. delay(1000);
  152. lcd.clear();
  153. lcd.setCursor(0,0);
  154. lcd.print("Scan 2nd Finger");
  155. }
  156.  
  157. if(finger.fingerID == 4 && firstsuccess == 1) {
  158. Serial.print("Found second fingerprint, success.");
  159. lcd.clear();
  160. lcd.setCursor(0,0);
  161. lcd.print("Success!");
  162. lock.attach(9);
  163. lock.write(90);
  164. while(true){
  165. Serial.print("Looping");
  166. resetState = digitalRead(13);
  167. if (resetState == HIGH) {
  168. lock.write(0);
  169. break;
  170. }
  171. }
  172. delay(1000);
  173. firstsuccess = 0;
  174. resetFunc();
  175. }
  176. Serial.print("Found ID #"); Serial.print(finger.fingerID);
  177. //Serial.print(" with confidence of "); Serial.println(finger.confidence);
  178. return finger.fingerID;
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement