safwan092

Untitled

Feb 11th, 2023
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.41 KB | None | 0 0
  1. #include <Adafruit_Fingerprint.h>
  2.  
  3. #define mySerial Serial2
  4. #define RXD2 16
  5. #define TXD2 17
  6.  
  7.  
  8. Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
  9.  
  10. uint8_t id;
  11.  
  12. void setup()
  13. {
  14. Serial2.begin(57600, SERIAL_8N1, RXD2, TXD2);
  15. Serial.begin(9600);
  16. while (!Serial); // For Yun/Leo/Micro/Zero/...
  17. delay(100);
  18. Serial.println("\n\nAdafruit Fingerprint sensor enrollment");
  19.  
  20. // set the data rate for the sensor serial port
  21. //finger.begin(57600);
  22.  
  23. if (finger.verifyPassword()) {
  24. Serial.println("Found fingerprint sensor!");
  25. } else {
  26. Serial.println("Did not find fingerprint sensor :(");
  27. while (1) { delay(1); }
  28. }
  29.  
  30. Serial.println(F("Reading sensor parameters"));
  31. finger.getParameters();
  32. Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX);
  33. Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX);
  34. Serial.print(F("Capacity: ")); Serial.println(finger.capacity);
  35. Serial.print(F("Security level: ")); Serial.println(finger.security_level);
  36. Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX);
  37. Serial.print(F("Packet len: ")); Serial.println(finger.packet_len);
  38. Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate);
  39. }
  40.  
  41. uint8_t readnumber(void) {
  42. uint8_t num = 0;
  43.  
  44. while (num == 0) {
  45. while (! Serial.available());
  46. num = Serial.parseInt();
  47. }
  48. return num;
  49. }
  50.  
  51. void loop() // run over and over again
  52. {
  53. Serial.println("Ready to enroll a fingerprint!");
  54. Serial.println("Please type in the ID # (from 1 to 127) you want to save this finger as...");
  55. id = readnumber();
  56. if (id == 0) {// ID #0 not allowed, try again!
  57. return;
  58. }
  59. Serial.print("Enrolling ID #");
  60. Serial.println(id);
  61.  
  62. while (! getFingerprintEnroll() );
  63. }
  64.  
  65. uint8_t getFingerprintEnroll() {
  66.  
  67. int p = -1;
  68. Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id);
  69. while (p != FINGERPRINT_OK) {
  70. p = finger.getImage();
  71. switch (p) {
  72. case FINGERPRINT_OK:
  73. Serial.println("Image taken");
  74. break;
  75. case FINGERPRINT_NOFINGER:
  76. Serial.println(".");
  77. break;
  78. case FINGERPRINT_PACKETRECIEVEERR:
  79. Serial.println("Communication error");
  80. break;
  81. case FINGERPRINT_IMAGEFAIL:
  82. Serial.println("Imaging error");
  83. break;
  84. default:
  85. Serial.println("Unknown error");
  86. break;
  87. }
  88. }
  89.  
  90. // OK success!
  91.  
  92. p = finger.image2Tz(1);
  93. switch (p) {
  94. case FINGERPRINT_OK:
  95. Serial.println("Image converted");
  96. break;
  97. case FINGERPRINT_IMAGEMESS:
  98. Serial.println("Image too messy");
  99. return p;
  100. case FINGERPRINT_PACKETRECIEVEERR:
  101. Serial.println("Communication error");
  102. return p;
  103. case FINGERPRINT_FEATUREFAIL:
  104. Serial.println("Could not find fingerprint features");
  105. return p;
  106. case FINGERPRINT_INVALIDIMAGE:
  107. Serial.println("Could not find fingerprint features");
  108. return p;
  109. default:
  110. Serial.println("Unknown error");
  111. return p;
  112. }
  113.  
  114. Serial.println("Remove finger");
  115. delay(2000);
  116. p = 0;
  117. while (p != FINGERPRINT_NOFINGER) {
  118. p = finger.getImage();
  119. }
  120. Serial.print("ID "); Serial.println(id);
  121. p = -1;
  122. Serial.println("Place same finger again");
  123. while (p != FINGERPRINT_OK) {
  124. p = finger.getImage();
  125. switch (p) {
  126. case FINGERPRINT_OK:
  127. Serial.println("Image taken");
  128. break;
  129. case FINGERPRINT_NOFINGER:
  130. Serial.print(".");
  131. break;
  132. case FINGERPRINT_PACKETRECIEVEERR:
  133. Serial.println("Communication error");
  134. break;
  135. case FINGERPRINT_IMAGEFAIL:
  136. Serial.println("Imaging error");
  137. break;
  138. default:
  139. Serial.println("Unknown error");
  140. break;
  141. }
  142. }
  143.  
  144. // OK success!
  145.  
  146. p = finger.image2Tz(2);
  147. switch (p) {
  148. case FINGERPRINT_OK:
  149. Serial.println("Image converted");
  150. break;
  151. case FINGERPRINT_IMAGEMESS:
  152. Serial.println("Image too messy");
  153. return p;
  154. case FINGERPRINT_PACKETRECIEVEERR:
  155. Serial.println("Communication error");
  156. return p;
  157. case FINGERPRINT_FEATUREFAIL:
  158. Serial.println("Could not find fingerprint features");
  159. return p;
  160. case FINGERPRINT_INVALIDIMAGE:
  161. Serial.println("Could not find fingerprint features");
  162. return p;
  163. default:
  164. Serial.println("Unknown error");
  165. return p;
  166. }
  167.  
  168. // OK converted!
  169. Serial.print("Creating model for #"); Serial.println(id);
  170.  
  171. p = finger.createModel();
  172. if (p == FINGERPRINT_OK) {
  173. Serial.println("Prints matched!");
  174. } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
  175. Serial.println("Communication error");
  176. return p;
  177. } else if (p == FINGERPRINT_ENROLLMISMATCH) {
  178. Serial.println("Fingerprints did not match");
  179. return p;
  180. } else {
  181. Serial.println("Unknown error");
  182. return p;
  183. }
  184.  
  185. Serial.print("ID "); Serial.println(id);
  186. p = finger.storeModel(id);
  187. if (p == FINGERPRINT_OK) {
  188. Serial.println("Stored!");
  189. } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
  190. Serial.println("Communication error");
  191. return p;
  192. } else if (p == FINGERPRINT_BADLOCATION) {
  193. Serial.println("Could not store in that location");
  194. return p;
  195. } else if (p == FINGERPRINT_FLASHERR) {
  196. Serial.println("Error writing to flash");
  197. return p;
  198. } else {
  199. Serial.println("Unknown error");
  200. return p;
  201. }
  202.  
  203. return true;
  204. }
Add Comment
Please, Sign In to add comment