Fingerprint Sensor is not Detected

I connected the TX wire (green wire) connected to pin 3 and RX wire (white wire) connected to pin 2. The Power wire (red wire) is connected to 5V and the GND wire (black wire) is connected to GND on the Arduino. I am using Arduino UNO and the Adafruit Fingerprint sensor Product 751. I have tried using multiple different pins and have switched the TX and RX wires. I have confirmed that the connections are good using a multimeter and have even re-soldered the RX and TX wires to make sure it wasn't a connectivity issue. The fingerprint sensor's LED lights up but when I open the Serial Monitor and it runs the "fingertest", it always shows "Did not find fingerprint sensor : (". I have looked at many other forums and tried to change the code to SoftwareSerial myserial(8,3); however, it still does not detect the fingerprint sensor. Can someone explain why this might be happening and how I can fix it?

#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
int getFingerprintIDez();
SoftwareSerial mySerial(2, 3); 
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
void setup()
{
  Serial.begin(9600);
  Serial.println("fingertest");
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  // set the data rate for the sensor serial port
  finger.begin(9600);
  if (finger.verifyPassword()) {
    Serial.println("Found fingerprint sensor!");
  } else {
    Serial.println("Did not find fingerprint sensor : (");
    while (1) {delay(1);}
  }
finger.getTemplateCount();
Serial.print("Sensor contains ");
Serial.print(finger.templateCount);
Serial.println(" templates");
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);
  digitalWrite(13, HIGH);
  delay(3000);
  digitalWrite(13, LOW);
  return finger.fingerID;
}

It looks to me like "getFingerprintID()" has at least one path that doesn't return a value.
Doesn't the compiler complain about that?

The complier does not complain when we run the code.

I looked at the part of the code you were referencing and I saw that the first case (case FINGERPRINT_OK) does not return a value. However, I was looking through the code and I think that was probably does that on purpose in order to break out of the switch case and move on to the next switch case where it converts the image.

I am new to Arduino coding, so I was wondering if you could also explain why it is necessary to return a value and where/how that value is being used in the code.

Also, I haven't actually gotten to that part of the code yet since the fingerprint sensor is not even being detected.

Thank you so much.

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