safwan092

Project_9931

Dec 11th, 2022
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.99 KB | None | 0 0
  1. #include <Adafruit_Fingerprint.h>
  2. #include <Servo.h>
  3.  
  4. #define redLED 5
  5. #define greenLED 6
  6. #define servoPin 4
  7. #define buzzerPin 11
  8. // For UNO and others without hardware serial, we must use software serial...
  9. // pin #2 is IN from sensor (GREEN wire)
  10. // pin #3 is OUT from arduino (WHITE wire)
  11. // Set up the serial port to use softwareserial..
  12. SoftwareSerial mySerial(2, 3);
  13. Servo myservo;
  14.  
  15. int count = 0;
  16. int flag = 0;
  17. int gateOpen = 0;
  18. Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
  19.  
  20. void setup()
  21. {
  22. Serial.begin(9600);
  23. myservo.attach(servoPin);
  24. pinMode(buzzerPin, OUTPUT);
  25. pinMode(redLED, OUTPUT);
  26. pinMode(greenLED, OUTPUT);
  27. digitalWrite(redLED, HIGH);
  28. digitalWrite(greenLED, LOW);
  29. digitalWrite(buzzerPin, 0);
  30. myservo.write(180);
  31. while (!Serial); // For Yun/Leo/Micro/Zero/...
  32. delay(100);
  33. Serial.println("\n\nAdafruit finger detect test");
  34.  
  35. // set the data rate for the sensor serial port
  36. finger.begin(57600);
  37. delay(5);
  38. if (finger.verifyPassword()) {
  39. Serial.println("Found fingerprint sensor!");
  40. } else {
  41. Serial.println("Did not find fingerprint sensor :(");
  42. while (1) {
  43. delay(1);
  44. }
  45. }
  46.  
  47. Serial.println(F("Reading sensor parameters"));
  48. finger.getParameters();
  49. Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX);
  50. Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX);
  51. Serial.print(F("Capacity: ")); Serial.println(finger.capacity);
  52. Serial.print(F("Security level: ")); Serial.println(finger.security_level);
  53. Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX);
  54. Serial.print(F("Packet len: ")); Serial.println(finger.packet_len);
  55. Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate);
  56.  
  57. finger.getTemplateCount();
  58.  
  59. if (finger.templateCount == 0) {
  60. Serial.print("Sensor doesn't contain any fingerprint data. Please run the 'enroll' example.");
  61. }
  62. else {
  63. Serial.println("Waiting for valid finger...");
  64. Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
  65. }
  66. }
  67.  
  68. void loop() {
  69. getFingerprintIDez();
  70. delay(50);
  71. }
  72.  
  73. uint8_t getFingerprintID() {
  74. uint8_t p = finger.getImage();
  75. switch (p) {
  76. case FINGERPRINT_OK:
  77. Serial.println("Image taken");
  78. break;
  79. case FINGERPRINT_NOFINGER:
  80. Serial.println("No finger detected");
  81. return p;
  82. case FINGERPRINT_PACKETRECIEVEERR:
  83. Serial.println("Communication error");
  84. return p;
  85. case FINGERPRINT_IMAGEFAIL:
  86. Serial.println("Imaging error");
  87. return p;
  88. default:
  89. Serial.println("Unknown error");
  90. return p;
  91. }
  92.  
  93. // OK success!
  94.  
  95. p = finger.image2Tz();
  96. switch (p) {
  97. case FINGERPRINT_OK:
  98. Serial.println("Image converted");
  99. break;
  100. case FINGERPRINT_IMAGEMESS:
  101. Serial.println("Image too messy");
  102. return p;
  103. case FINGERPRINT_PACKETRECIEVEERR:
  104. Serial.println("Communication error");
  105. return p;
  106. case FINGERPRINT_FEATUREFAIL:
  107. Serial.println("Could not find fingerprint features");
  108. return p;
  109. case FINGERPRINT_INVALIDIMAGE:
  110. Serial.println("Could not find fingerprint features");
  111. return p;
  112. default:
  113. Serial.println("Unknown error");
  114. return p;
  115. }
  116.  
  117. // OK converted!
  118. p = finger.fingerSearch();
  119. if (p == FINGERPRINT_OK) {
  120. Serial.println("Found a print match!");
  121. } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
  122. Serial.println("Communication error");
  123. return p;
  124. } else if (p == FINGERPRINT_NOTFOUND) {
  125. Serial.println("Did not find a match");
  126. return p;
  127. } else {
  128. Serial.println("Unknown error");
  129. return p;
  130. }
  131.  
  132. // found a match!
  133. Serial.print("Found ID #"); Serial.print(finger.fingerID);
  134. Serial.print(" with confidence of "); Serial.println(finger.confidence);
  135.  
  136. return finger.fingerID;
  137. }
  138.  
  139. // returns -1 if failed, otherwise returns ID #
  140. int getFingerprintIDez() {
  141. uint8_t p = finger.getImage();
  142. if (p != FINGERPRINT_OK) return -1;
  143.  
  144. p = finger.image2Tz();
  145. if (p != FINGERPRINT_OK) return -1;
  146.  
  147. p = finger.fingerFastSearch();
  148. if (p != FINGERPRINT_OK) {
  149. Error();
  150. return -1;
  151. }
  152. else {
  153. // found a match!
  154. if (flag == 0) {
  155. OpenGate();
  156. flag = 1;
  157. }
  158. else {
  159. CloseGate();
  160. flag = 0;
  161. }
  162. Serial.print("Found ID #"); Serial.print(finger.fingerID);
  163. Serial.print(" with confidence of "); Serial.println(finger.confidence);
  164. return finger.fingerID;
  165. }
  166. }
  167.  
  168. void OpenGate() {
  169. digitalWrite(redLED, LOW);
  170. digitalWrite(greenLED, HIGH);
  171. myservo.write(0);
  172. delay(5000);
  173. count = 0;
  174. gateOpen = 1;
  175. }
  176.  
  177. void CloseGate() {
  178. myservo.write(180);
  179. digitalWrite(redLED, HIGH);
  180. digitalWrite(greenLED, LOW);
  181. count = 0;
  182. gateOpen = 0;
  183. delay(2000);
  184. }
  185.  
  186. void Error() {
  187. count = count + 1;
  188. if (count == 2) {
  189. count = 0;
  190. digitalWrite(greenLED, LOW);
  191. digitalWrite(buzzerPin, HIGH);
  192. digitalWrite(redLED, HIGH);
  193. delay(500);
  194. digitalWrite(redLED, LOW);
  195. delay(500);
  196. digitalWrite(redLED, HIGH);
  197. delay(500);
  198. digitalWrite(redLED, LOW);
  199. delay(500);
  200. digitalWrite(redLED, HIGH);
  201. delay(500);
  202. digitalWrite(redLED, LOW);
  203. delay(500);
  204. digitalWrite(redLED, HIGH);
  205. digitalWrite(buzzerPin, LOW);
  206. if (gateOpen == 1) {
  207. digitalWrite(redLED, LOW);
  208. digitalWrite(greenLED, HIGH);
  209. }
  210. }
  211. else {
  212. digitalWrite(greenLED, LOW);
  213. //digitalWrite(buzzerPin, HIGH);
  214. digitalWrite(redLED, HIGH);
  215. delay(500);
  216. digitalWrite(redLED, LOW);
  217. delay(500);
  218. digitalWrite(redLED, HIGH);
  219. delay(500);
  220. digitalWrite(redLED, LOW);
  221. delay(500);
  222. digitalWrite(redLED, HIGH);
  223. delay(500);
  224. digitalWrite(redLED, LOW);
  225. delay(500);
  226. digitalWrite(redLED, HIGH);
  227. //digitalWrite(buzzerPin, LOW);
  228. if (gateOpen == 1) {
  229. digitalWrite(redLED, LOW);
  230. digitalWrite(greenLED, HIGH);
  231. }
  232. }
  233. }
Advertisement
Add Comment
Please, Sign In to add comment