Hi , I am using adafruit fingerprint sensor to comand a relay that opens a door.
First i configured and stored to the fingerprint the images after that i wrote a program that write the output when a fingerprint is recognized , but every time i switch off and then switch on the arduino i need to download the fingerprint sketch again first if not the fingerprint is not woriking.
Can someone explain me why?
void setup()
{
// set the data rate for the sensor serial port
finger.begin(57600);
delay(5);
if (finger.verifyPassword())
{
}
else
{
while (1) { delay(1); }
}
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); //Switch off relay initially. Relay is LOW level triggered relay so we need to write HIGH.
}
void loop()
{
if ( getFingerPrint() != -1)
{
digitalWrite(RELAY_PIN, LOW);
delay(ACCESS_DELAY);
digitalWrite(RELAY_PIN, HIGH);
}
delay(50); //Add some delay before next scan.
}
// returns -1 if failed, otherwise returns ID #
int getFingerPrint()
{
int 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;
This is your sketch to verify new fingerprints against the fingerprints stored in flash memory, and uses the "finger" object/instance to retrieve the fingerprints from flash memory. Before running this sketch, you must run a sketch to store the fingerprints to flash memory. Please, post the fingerprint storing sketch.
#include <Adafruit_Fingerprint.h>
SoftwareSerial mySerial(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
#define RELAY_PIN 4
#define ACCESS_DELAY 3000 // Keep lock unlocked for 3 seconds
void setup()
{
// set the data rate for the sensor serial port
finger.begin(57600);
delay(5);
if (finger.verifyPassword())
{
}
else
{
while (1) {
delay(1);
}
}
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); //Switch off relay initially. Relay is LOW level triggered relay so we need to write HIGH.
}
void loop()
{
if ( getFingerPrint() != -1)
{
digitalWrite(RELAY_PIN, LOW);
delay(ACCESS_DELAY);
digitalWrite(RELAY_PIN, HIGH);
}
delay(50); //Add some delay before next scan.
}
// returns -1 if failed, otherwise returns ID #
int getFingerPrint()
{
int 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!
return finger.fingerID;
}