Hello everyone willing to look at this,
I am fairly new to Arduino and have not worked with the adafruit fingerprint sensor before. I am trying to create a fingerprint door lock, in which my fingerprint will control a micro servo motor, which will push the door lock once the fingerprint is recognized. I am having trouble integrating the servo code with the fingerprint sensor code. I have used the adafruit fingerprint sensor library and have already enrolled two fingerprints. I do not know how to get the servo motor to only react to my fingerprint, and not be on a timer. I am however able to get the servo to move on my fingerprint in one direction, and then wait and return to a position after the desired time. I can only get this to happen when the Arduino is plugged into the computer via USB, and the serial monitor is open. once the Arduino is on the battery pack, when I put my finger on the sensor, nothing happens. Can anyone help me understand why I cannot seem to get the fingerprint sensor to move the motor when on the battery pack? I will copy the code down below, thanks for the help.
/***************************************************
This is an example sketch for our optical Fingerprint sensor
Designed specifically to work with the Adafruit BMP085 Breakout
----> http://www.adafruit.com/products/751
These displays use TTL Serial to communicate, 2 pins are required to
interface
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, all text above must be included in any redistribution
****************************************************/
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
#include <Servo.h> //Add servo library
int getFingerprintIDez();
Servo servo1; //Define servo name / object
#define servoPin 8 //Define pin number to which servo motor is connected
#define durationTime 10000 //Define the time it remains in the open position of the door lock (miliseconds)
#define servoMin 0 //Open position
#define servoMax 180 // Closed position
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
void setup()
{
while (!Serial); // For Yun/Leo/Micro/Zero/…
Serial.begin(9600);
Serial.println(“Adafruit finger detect test”);
servo1.attach(servoPin); //Define pin number of the servo
servo1.write(servoMax); //The position of the servo at the start of the program
// set the data rate for the sensor serial port
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println(“Found fingerprint sensor!”);
} else {
Serial.println(“Did not find fingerprint sensor :(”);
while (1);
}
Serial.println(“Waiting for valid finger…”);
}
void loop() // run over and over again
{
getFingerprintIDez();
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.fingerFastSearch();
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);
}
// 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;
servo1.write(servoMin); //If the fingerprint is correct open the door lock
delay(durationTime); //Keep the lock open for the defined duration
servo1.write(servoMax); //take the lock OFF again
// found a match!
Serial.print(“Found ID #”); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
return finger.fingerID;
}