Fingerprint sensor wont recognize my finger when on battery pack

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;
}

 while (!Serial);  // For Yun/Leo/Micro/Zero/...

Do you have one of these? If not, GET RID OF THIS STATEMENT.

If you do, then it is no wonder that your program does nothing when not connected to the PC.

Serial.println("Did not find fingerprint sensor :(");

What is the PC supposed to do with a frowny face?

You clearly couldn't be bothered reading the stickies at the top of the forum before you blundered in here. Do so now.

Thank you for the help, I am using an Arduino Uno board, and I got rid of the two statements you suggested, but am still at a loss of what to do next, as this did not particularly fix the problem. Is there something I need to change in the code to keep a fingerprint stored in the sensor?

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()
{
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;
}

I am guessing, from the description you give, the issue and solution lies within these magic numbers:

Details please. What exactly is “the battery pack” and how is it connected to the Arduino and the servo? A wiring diagram would be good. Oh and what type of servo?

Steve

Read "How To Use This Forum"

This is what happens when you do not

there will never be any circumstance of a fingerprint sensor turning a motor. power turns motors. more power than you should put through those skinny little leads on an Arduino. you run high current draw items off separate leads straight to the power supply.

The battery pack consists of 6 1.5 volt batteries, and the wiring is the same as in the video link How to Make Fingerprint Door Lock | Arduino Project - YouTube