Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- #include <Adafruit_MLX90614.h>
- #include <Adafruit_Fingerprint.h>
- //------------------------------------------byte array to display degrees on the LCD
- byte degree[8] = {
- 0b00110,
- 0b01001,
- 0b01001,
- 0b00110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000
- };
- //------------------------------------------
- #if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
- // For UNO and others without hardware serial, we must use software serial...
- // pin #2 is IN from sensor (GREEN wire)
- // pin #3 is OUT from arduino (WHITE wire)
- // Set up the serial port to use softwareserial..
- SoftwareSerial mySerial(2, 3);
- #else
- // On Leonardo/M0/etc, others with hardware serial, use hardware serial!
- // #0 is green wire, #1 is white
- #define mySerial Serial1
- #endif
- LiquidCrystal_I2C lcd(0x27, 20, 4);
- Adafruit_MLX90614 mlx = Adafruit_MLX90614(); //-> mlx declaration
- Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
- #define pumpPin 11
- int fingerNumber = 0;
- void setup()
- {
- pinMode(pumpPin, OUTPUT);
- digitalWrite(pumpPin, LOW);
- lcd.init();
- lcd.backlight();
- lcd.setCursor(3, 0);
- lcd.print("Hello, world!");
- lcd.createChar(0, degree);
- mlx.begin();
- Serial.begin(9600);
- while (!Serial); // For Yun/Leo/Micro/Zero/...
- delay(100);
- Serial.println("\n\nAdafruit finger detect test");
- // set the data rate for the sensor serial port
- finger.begin(57600);
- 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 loop() // run over and over again
- {
- getFingerprintID();
- delay(50); //don't ned to run this at full speed.
- }
- 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!");
- fingerNumber = finger.fingerID;
- fingerFound();
- } else if (p == FINGERPRINT_PACKETRECIEVEERR) {
- Serial.println("Communication error");
- return p;
- } else if (p == FINGERPRINT_NOTFOUND) {
- Serial.println("Did not find a match");
- fingerNotFound();
- 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;
- }
- void fingerFound() {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("Found ID #");
- lcd.print(fingerNumber);
- lcd.print(" ");
- lcd.setCursor(0, 1);
- lcd.print("Ambient Temp: ");
- lcd.print(mlx.readAmbientTempC());
- lcd.write(byte(0));
- lcd.setCursor(0, 2);
- lcd.print("Target Temp: ");
- lcd.print(mlx.readObjectTempC());
- lcd.write(byte(0));
- digitalWrite(pumpPin, HIGH);
- delay(500);
- digitalWrite(pumpPin, LOW);
- delay(3000);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("Scanning...");
- }
- void fingerNotFound() {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("Finger Print N/A");
- lcd.setCursor(0, 1);
- lcd.print("Ambient Temp: ");
- lcd.print(mlx.readAmbientTempC());
- lcd.write(byte(0));
- lcd.setCursor(0, 2);
- lcd.print("Target Temp: ");
- lcd.print(mlx.readObjectTempC());
- lcd.write(byte(0));
- digitalWrite(pumpPin, HIGH);
- delay(500);
- digitalWrite(pumpPin, LOW);
- delay(3000);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("Scanning...");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement