Errores al compilar "fingerprint", no conectado a una computadora

Saludos afectuosos a todos los integrantes del foro, aunque es muy obvio mi casi nula experiencia en programación de Arduino, pues con mi solicitud de ayuda lo hago muy evidente, resulta que quiero implementar una simple apertura de una cerradura eléctrica, empleando un lector de huellas dactilares y por supuesto un Arduino Uno, he recurrido a la librería de Adafruit.com (anexo el archivo) para el caso, no tengo problema para que mi Arduino reconozca dicho lector, así como ejecutar los ejemplos para: capturar, borrar y reconocer una huella, el problema es cuando quito la alimentación desde el USB de mi computadora y conecto una fuente externa, con la finalidad de que reconozca una huella determinad con el ejemplo “fingerprint” de la citada librería, al copilarlo de este modo me arroja un error y mis escasos conocimientos, no me permiten solucionarlo, es por ello que recurro a ustedes, buscando me orienten en que debo modificar el código referido, mil disculpas si con esto estoy violando alguna de las normas del foro o no lo estoy haciendo en el lugar correcto, pero también se debe a mi falta de experiencia, de antemano les doy mi agradecimiento por la ayuda que me puedan brindar, un abrazo para todos.

/*************************************************** 
  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>

int getFingerprintIDez();

// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino  (WHITE wire)
SoftwareSerial mySerial(2, 3);


Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

void setup()  
{
  Serial.begin(9600);
  Serial.println("fingertest");

  // 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;
  
  // found a match!
  Serial.print("Found ID #"); Serial.print(finger.fingerID); 
  Serial.print(" with confidence of "); Serial.println(finger.confidence);
  return finger.fingerID; 
}

Código-Figerprint.txt (3.67 KB)

Hola ricamesa, bienvenido al foro. Te invito a que te leas las NORMAS y así veas como se ha de postear correctamente código.

Además verás que cuando se hace una consulta pedimos que se nos de la máxima información posible. En tu caso dices que el problema viene cuando quieres alimentar el UNO con una alimentación externa y no te deja subir código. Posiblemente estes haciendo una conexión MAL. Así que nos interesa ver el tipo de conexión e incluso el error que te da al compilar (etiquetado como si fuera código entre las etiquetas code].

Muchas gracias por responder y mil disculpas por mis errores u omisiones, aclaro porque no lo expuse correctamente, no hay ningún error o problema con el código, este funciona perfectamente en todos los ejemplos de la librería de Adafruit, la situación es que yo no se como puedo lograr que la huella previamente grabada con el ejemplo “enroll” de la mencionada librería, lo reconozca el Arduino, con el ejemplo “fingeprint” sin que esté conectado a la PC, pues para lo que pretendo “abrir una cerradura eléctrica” esto no es lógico, saludos afectuosos.

El código ejemplo te dice cuando una huella coincide con lo que tiene guardado.

Por esta razón es que se te pide (normas del foro) que el código este visible como ahora lo he puesto.
Sin embargo, pasaste por alto la recomendación de @victorjam y lo dejaste para mas adelante.
En este foro es importante corregir el posteo porque de eso depende el nivel de respuesta que tendrás.

Tu código (ahora que puede leerse dice) :

 Serial.print("Found ID #"); Serial.print(finger.fingerID); 
  Serial.print(" with confidence of "); Serial.println(finger.confidence);
  return finger.fingerID;

De hecho en el loop solo mira este procedimiento llamado getFingerprintIDez

Asi que cuando una huella coincida dira

Found ID #1 with confidence of 100

supongamos.

ese mismo mensaje o bien el retorno finger.fingerID que será un número 1 en este caso para la primer huella, es lo que puedes usar para activar tu Relé.

if (getFingerprintIDez() == 1) { // para la primer huella
   digitalWrite(pinRele, LOW);     // para un Rele LOW lo activa y HIGH lo desactiva.
   delay(2000);                          // lo mantengo activo por 2 segundos. Modifica el tiempo a tu necesidad
   digitalWrite(pinRele, HIGH);    // desactivamos el rele
}

Deberías poner tu conexionado como te pidió victorjam. Cuando dices que alimentas con una fuente externa ¿es al conjunto Arduino-fingerprint? ¿o solo el fingerprint? En el ultimo caso debes unir las masas del Arduino con el fingerprint