Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_Fingerprint.h>
- #define mySerial Serial2
- #define RXD2 16
- #define TXD2 17
- #define btn 4
- int totalCountCalculated = 0;
- int numberOfStudents = 4;
- int totalCount = numberOfStudents;
- int StudentNumber[numberOfStudents] = 0; // 1 2 3 4
- int ParentNumber[numberOfStudents] = 0; // 1 2 3 4
- //**************************************************************
- int ParentTelegramID[numberOfStudents];//Must Set!!!!!!
- //**************************************************************
- Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
- void setup()
- {
- Serial.begin(9600);
- pinMode(btn, INPUT);
- initFingerPrint();
- resetData();
- }
- void loop() {
- /////////////////////////////////////////////////////////////////
- //Handle Messages from Parents Telegram
- //Parent of Child #1
- //ParentNumber[0]=1
- //totalCount = totalCount - ParentNumber[0]
- //Parent of Child #2
- //ParentNumber[1]=1
- //totalCount = totalCount - ParentNumber[1]
- //Parent of Child #3
- //ParentNumber[2]=1
- //totalCount = totalCount - ParentNumber[2]
- //Parent of Child #4
- //ParentNumber[3]=1
- //totalCount = totalCount - ParentNumber[3]
- /////////////////////////////////////////////////////////////////
- if (digitalRead(btn) == 1) {
- if (totalCountCalculated != totalCount) {
- //Send Alert To Driver
- for (int i = 0; i < numberOfStudents; i++) {
- if (ParentNumber[i] == 0 && StudentNumber[i] == 0) {
- //Send Message to Parent of Child #(i+1) Child did not enter the bus Alert!!
- //Send Message to Driver Child #(i+1) did not enter the bus Alert!! and Parents did not pick up
- }
- }
- }
- }
- if (getFingerprintIDez() != -1) {
- /////////////////////////////////////////////////
- if (StudentNumber[getFingerprintIDez() - 1] == 1) {
- StudentNumber[getFingerprintIDez() - 1] = 0;
- totalCountCalculated = totalCountCalculated - 1;
- //Send Message to Parent Child is OUT of the Bus
- //Send Message to Driver totalCountCalculated/TotalCount
- }
- else {
- StudentNumber[getFingerprintIDez() - 1] = 1;
- totalCountCalculated = totalCountCalculated + 1;
- //Send Message to Parent Child is IN the Bus
- //Send Message to Driver Child is IN the Bus
- //Send Message to Driver totalCountCalculated/TotalCount
- }
- /////////////////////////////////////////////////
- }
- delay(50);
- }
- uint8_t getFingerprintID() {
- uint8_t p = finger.getImage();
- switch (p) {
- case FINGERPRINT_OK:
- Serial.println("Image taken");
- break;
- case FINGERPRINT_NOFINGER:
- Serial.println("No finger detected");
- return p;
- case FINGERPRINT_PACKETRECIEVEERR:
- Serial.println("Communication error");
- return p;
- case FINGERPRINT_IMAGEFAIL:
- Serial.println("Imaging error");
- return p;
- default:
- Serial.println("Unknown error");
- return p;
- }
- // OK success!
- p = finger.image2Tz();
- 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;
- }
- // OK converted!
- p = finger.fingerSearch();
- if (p == FINGERPRINT_OK) {
- Serial.println("Found a print match!");
- } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
- Serial.println("Communication error");
- return p;
- } else if (p == FINGERPRINT_NOTFOUND) {
- Serial.println("Did not find a match");
- return p;
- } else {
- Serial.println("Unknown error");
- return p;
- }
- // found a match!
- Serial.print("Found ID #"); Serial.print(finger.fingerID);
- Serial.print(" with confidence of "); Serial.println(finger.confidence);
- return finger.fingerID;
- }
- // returns -1 if failed, otherwise returns ID #
- int getFingerprintIDez() {
- uint8_t p = finger.getImage();
- if (p != FINGERPRINT_OK) return -1;
- p = finger.image2Tz();
- if (p != FINGERPRINT_OK) return -1;
- p = finger.fingerFastSearch();
- if (p != FINGERPRINT_OK) return -1;
- // found a match!
- Serial.print("Found ID #"); Serial.print(finger.fingerID);
- Serial.print(" with confidence of "); Serial.println(finger.confidence);
- return finger.fingerID;
- }
- void initFingerPrint() {
- Serial2.begin(57600, SERIAL_8N1, RXD2, TXD2);
- while (!Serial);
- delay(100);
- Serial.println("\n\nAdafruit finger detect test");
- delay(5);
- if (finger.verifyPassword()) {
- Serial.println("Found fingerprint sensor!");
- } else {
- Serial.println("Did not find fingerprint sensor :(");
- while (1) {
- delay(1);
- }
- }
- Serial.println(F("Reading sensor parameters"));
- finger.getParameters();
- Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX);
- Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX);
- Serial.print(F("Capacity: ")); Serial.println(finger.capacity);
- Serial.print(F("Security level: ")); Serial.println(finger.security_level);
- Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX);
- Serial.print(F("Packet len: ")); Serial.println(finger.packet_len);
- Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate);
- finger.getTemplateCount();
- if (finger.templateCount == 0) {
- Serial.print("Sensor doesn't contain any fingerprint data. Please run the 'enroll' example.");
- }
- else {
- Serial.println("Waiting for valid finger...");
- Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
- }
- }
- void resetData() {
- StudentNumber[numberOfStudents] = 0;
- ParentNumber[numberOfStudents] = 0;
- totalCount = numberOfStudents;
- totalCountCalculated = 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement