Program not running after switch off

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?

here the code>

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

type or paste code here

Welcome to the forum

Please follow the advice given in the link below when posting code, in particular the section entitled 'Posting code and common code problems'

Use code tags (the < CODE/ > icon above the compose window) to make it easier to read and copy for examination

https://forum.arduino.cc/t/how-to-get-the-best-out-of-this-forum

Please post the sketch that does this, using code tags when you do

If upon startup the fingerprint scanner can not do verifyPassword() you get stuck in the while loop.

Maybe the scanner needs some more time to get started?

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

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.