Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_Fingerprint.h>
- #include <SoftwareSerial.h>
- #include <LiquidCrystal.h>
- #include <stdlib.h>
- int getFingerprintIDez();
- uint8_t getFingerprintEnroll(uint8_t id);
- SoftwareSerial mySerial(2, 3);
- LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
- Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
- void setup()
- {
- Serial.begin(9600);
- //pinMode(button, INPUT);
- // set the data rate for the sensor serial port
- finger.begin(57600);
- if (finger.verifyPassword()) {
- Serial.println("Found fingerprint sensor!");
- delay(50);
- } else {
- Serial.println("Did not find fingerprint sensor :(");
- while (1);
- }
- lcd.begin(16,2); lcd.setCursor(0,0); lcd.clear();
- lcd.print("Type in your");
- lcd.setCursor(0,1);
- lcd.print("identity number");
- }
- void loop() // run over and over again
- {
- types in a number from 0 to 255 in keypad (because of fingerprint memory)
- delay(50);
- int key=0;
- uint8_t test=0;
- while (true) {
- while (! Serial.available());
- char k = Serial.read();
- // if (! isdigit(k)) break;
- key = k - '0';
- Serial.print(k);
- /* lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Your identity");
- lcd.setCursor(0,1);
- lcd.print("number is");
- lcd.setCursor(10,1);*/
- }
- if(key == 1)
- {
- Serial.println("Type in the ID # you want to save this finger as...");
- uint8_t id = 0;
- while (true) {
- while (! Serial.available());
- char c = Serial.read();
- if (! isdigit(c)) break;
- id *= 10;
- id += c - '0';}
- Serial.println("Enrolling ID #");
- Serial.println(id);
- lcd.clear();
- lcd.print("Enrolling ID #");
- lcd.print(id);
- deleteFingerprint(id);
- delay(100);
- while (!getFingerprintEnroll(id));
- }
- else if(key==3)
- {
- finger.emptyDatabase();
- Serial.print("The database is now cleared");
- }
- else
- {
- delay(2000);
- lcd.clear();
- lcd.print("Scan your finger");
- Serial.println("Waiting for valid finger...");
- lcd.clear();
- lcd.print("Waiting for finger");
- int ret;
- do {
- ret = getFingerprintIDez();
- delay(50);
- }
- while (ret < 0);
- }
- }
- //don't ned to run this at full speed.
- uint8_t getFingerprintID() {
- uint8_t n = finger.getImage();
- switch (n) {
- case FINGERPRINT_OK:
- Serial.println("Image taken");
- break;
- case FINGERPRINT_NOFINGER:
- Serial.println("No finger detected");
- return n;
- case FINGERPRINT_PACKETRECIEVEERR:
- Serial.println("Communication error");
- return n;
- case FINGERPRINT_IMAGEFAIL:
- Serial.println("Imaging error");
- return n;
- default:
- Serial.println("Unknown error");
- return n;
- }
- // OK success!
- n = finger.image2Tz();
- switch (n) {
- case FINGERPRINT_OK:
- Serial.println("Image converted");
- break;
- case FINGERPRINT_IMAGEMESS:
- Serial.println("Image too messy");
- return n;
- case FINGERPRINT_PACKETRECIEVEERR:
- Serial.println("Communication error");
- return n;
- case FINGERPRINT_FEATUREFAIL:
- Serial.println("Could not find fingerprint features");
- return n;
- case FINGERPRINT_INVALIDIMAGE:
- Serial.println("Could not find fingerprint features");
- return n;
- default:
- Serial.println("Unknown error");
- return n;
- }
- // OK converted!
- n = finger.fingerFastSearch();
- if (n == FINGERPRINT_OK) {
- Serial.println("Found a print match!");
- } else if (n == FINGERPRINT_PACKETRECIEVEERR) {
- Serial.println("Communication error");
- return n;
- } else if (n == FINGERPRINT_NOTFOUND) {
- Serial.println("Did not find a match");
- return n;
- } else {
- Serial.println("Unknown error");
- return n;
- }
- // found a match!
- Serial.print("Found ID #"); Serial.print(finger.fingerID);
- Serial.print(" with confidence of "); Serial.print(finger.confidence);
- lcd.clear();
- lcd.print(finger.fingerID);
- }
- // returns -1 if failed, otherwise returns ID #
- int getFingerprintIDez() {
- uint8_t n = finger.getImage();
- if (n != FINGERPRINT_OK) return -1;
- n = finger.image2Tz();
- if (n != FINGERPRINT_OK) return -1;
- n = finger.fingerFastSearch();
- if (n != FINGERPRINT_OK) return -1;
- // found a match!
- Serial.print("Found ID #"); Serial.print(finger.fingerID);
- Serial.print(" with confidence of "); Serial.println(finger.confidence);
- lcd.clear();
- lcd.print(finger.fingerID);
- return finger.fingerID;
- }
- uint8_t getFingerprintEnroll(uint8_t id) {
- uint8_t p = -1;
- Serial.println("Waiting for valid finger to enroll");
- while (p != FINGERPRINT_OK) {
- p = finger.getImage();
- switch (p) {
- case FINGERPRINT_OK:
- Serial.println("Image taken");
- break;
- case FINGERPRINT_NOFINGER:
- Serial.println(".");
- break;
- case FINGERPRINT_PACKETRECIEVEERR:
- Serial.println("Communication error");
- break;
- case FINGERPRINT_IMAGEFAIL:
- Serial.println("Imaging error");
- break;
- default:
- Serial.println("Unknown error");
- break;
- }
- }
- // OK success!
- p = finger.image2Tz(1);
- switch (p) {
- case FINGERPRINT_OK:
- Serial.println("Image converted");
- break;
- case FINGERPRINT_IMAGEMESS:
- Serial.println("Image too messy");
- return p;
- case FINGERPRINT_PACKETRECIEVEERR:
- Serial.println("Communication error");
- return p;
- case FINGERPRINT_FEATUREFAIL:
- Serial.println("Could not find fingerprint features");
- return p;
- case FINGERPRINT_INVALIDIMAGE:
- Serial.println("Could not find fingerprint features");
- return p;
- default:
- Serial.println("Unknown error");
- return p;
- }
- Serial.println("Remove finger");
- delay(2000);
- p = 0;
- while (p != FINGERPRINT_NOFINGER) {
- p = finger.getImage();
- }
- p = -1;
- Serial.println("Place same finger again");
- delay(500);
- while (p != FINGERPRINT_OK) {
- p = finger.getImage();
- switch (p) {
- case FINGERPRINT_OK:
- Serial.println("Image taken");
- break;
- case FINGERPRINT_NOFINGER:
- Serial.print(".");
- break;
- case FINGERPRINT_PACKETRECIEVEERR:
- Serial.println("Communication error");
- break;
- case FINGERPRINT_IMAGEFAIL:
- Serial.println("Imaging error");
- break;
- default:
- Serial.println("Unknown error");
- break;
- }
- }
- // OK success!
- p = finger.image2Tz(2);
- switch (p) {
- case FINGERPRINT_OK:
- Serial.println("Image converted");
- delay(1000);
- break;
- case FINGERPRINT_IMAGEMESS:
- Serial.println("Image too messy");
- return p;
- case FINGERPRINT_PACKETRECIEVEERR:
- Serial.println("Communication error");
- return p;
- case FINGERPRINT_FEATUREFAIL:
- Serial.println("Could not find fingerprint features");
- return p;
- case FINGERPRINT_INVALIDIMAGE:
- Serial.println("Could not find fingerprint features");
- return p;
- default:
- Serial.println("Unknown error");
- return p;
- }
- // OK converted!
- p = finger.createModel();
- if (p == FINGERPRINT_OK) {
- Serial.println("Prints matched!");
- delay(1000);
- } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
- Serial.println("Communication error");
- return p;
- } else if (p == FINGERPRINT_ENROLLMISMATCH) {
- Serial.println("Fingerprints did not match");
- return p;
- } else {
- Serial.println("Unknown error");
- return p;
- }
- p = finger.storeModel(id);
- if (p == FINGERPRINT_OK) {
- Serial.println("Stored!");
- delay(500);
- } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
- Serial.println("Communication error");
- return p;
- } else if (p == FINGERPRINT_BADLOCATION) {
- Serial.println("Could not store in that location");
- return p;
- } else if (p == FINGERPRINT_FLASHERR) {
- Serial.println("Error writing to flash");
- return p;
- } else {
- Serial.println("Unknown error");
- return p;
- }
- }
- uint8_t deleteFingerprint(uint8_t id) {
- uint8_t p = -1;
- p = finger.deleteModel(id);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement