ultra slim fingerprint sensor
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
- blongo
- Posts: 4
- Joined: Wed Dec 29, 2021 8:54 pm
ultra slim fingerprint sensor
Hello! I am trying to use ultra slim fingerprint sensor to turn on and off an led. However, I can't seem to get the sensor to work with the led. I have tried on my own as well as have tried to follow a few online guides people put on Youtube ( they used the bulkier fingerprint sensor) but it still would not interact with the led. I have used both example codes for enrolling and fingerprint testing and both seemed to work. I then modified the fingerprint example code with if statements that used the finger.fingerID number to turn on the led. Any thoughts or advice would be great!
- adafruit_support_mike
- Posts: 67485
- Joined: Thu Feb 11, 2010 2:51 pm
Re: ultra slim fingerprint sensor
Post a photo showing your hardware and connections, along with your code (between CODE tags please) and we'll take a look. 800x600 images usually work best.
- blongo
- Posts: 4
- Joined: Wed Dec 29, 2021 8:54 pm
Re: ultra slim fingerprint sensor
i currently have the fingerprint sensors red wire connected to 3.3v, the black to gnd, green to pin 2 and yellow to pin 3. The led is in pin 13 and gnd. The two codes i am using are the adafruit enroll code and a modified version of the fingerprint code. The serial monitor recognizes the enrolled finger and the sensor changes color when detected. eventually i hope to move this project from an arduino to a trinket pro 5v. would that potential cause further issues?
Code: Select all
/***************************************************
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>
#if (defined(__AVR__) || defined(ESP8266)) && !defined(__AVR_ATmega2560__)
// For UNO and others without hardware serial, we must use software serial...
// pin #2 is IN from sensor (GREEN wire)
// pin #3 is OUT from arduino (WHITE wire)
// Set up the serial port to use softwareserial..
SoftwareSerial mySerial(2, 3);
#else
// On Leonardo/M0/etc, others with hardware serial, use hardware serial!
// #0 is green wire, #1 is white
#define mySerial Serial1
#endif
const int ledPin = 13; // the number of the LED pin
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
void setup()
{
Serial.begin(9600);
while (!Serial); // For Yun/Leo/Micro/Zero/...
delay(100);
Serial.println("\n\nAdafruit finger detect test");
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// set the data rate for the sensor serial port
finger.begin(57600);
delay(5);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1) { delay(1); }
}
Serial.println(F("Reading sensor parameters"));
finger.getParameters();
Serial.print(F("Status: 0x")); Serial.println(finger.status_reg, HEX);
Serial.print(F("Sys ID: 0x")); Serial.println(finger.system_id, HEX);
Serial.print(F("Capacity: ")); Serial.println(finger.capacity);
Serial.print(F("Security level: ")); Serial.println(finger.security_level);
Serial.print(F("Device address: ")); Serial.println(finger.device_addr, HEX);
Serial.print(F("Packet len: ")); Serial.println(finger.packet_len);
Serial.print(F("Baud rate: ")); Serial.println(finger.baud_rate);
finger.getTemplateCount();
if (finger.templateCount == 0) {
Serial.print("Sensor doesn't contain any fingerprint data. Please run the 'enroll' example.");
}
else {
Serial.println("Waiting for valid finger...");
Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
}
}
void loop() // run over and over again
{
getFingerprintID();
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.fingerSearch();
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);
return finger.fingerID;
}
// 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;
if (finger.fingerID = 1){
digitalWrite(ledPin, HIGH);
}
else{
digitalWrite(ledPin,LOW);
}
}[code]
- Attachments
-
- setup800x600.jpg (59.75 KiB) Viewed 132 times
- adafruit_support_mike
- Posts: 67485
- Joined: Thu Feb 11, 2010 2:51 pm
Re: ultra slim fingerprint sensor
As a sanity check, can you light the LED directly from code?
There's always a chance that an LED can be connected backwards.
There's always a chance that an LED can be connected backwards.
- blongo
- Posts: 4
- Joined: Wed Dec 29, 2021 8:54 pm
Re: ultra slim fingerprint sensor
Yes, using a simple LED code the light is able to turn on and off. I can also get it to work with a Tactile Switch.
- adafruit_support_mike
- Posts: 67485
- Joined: Thu Feb 11, 2010 2:51 pm
Re: ultra slim fingerprint sensor
Okay, that rules out connection issues.
Try printing the value of finger.fingerID just before the test to light the LED. See if it has a value that's different from 1.
Try printing the value of finger.fingerID just before the test to light the LED. See if it has a value that's different from 1.
- blongo
- Posts: 4
- Joined: Wed Dec 29, 2021 8:54 pm
Re: ultra slim fingerprint sensor
With the current code, if i open the serial monitor it says
"Image converted
Found a print match!
Found ID #1 with confidence of 100"
When i place a different finger it says
"Image converted
Did not find a match"
I tried throwing in a Serial.print after the led on and off statement but that did not show in the monitor. It seems like the sensor is able to ID the registered finger and recognize if a finger print is not registered.
"Image converted
Found a print match!
Found ID #1 with confidence of 100"
When i place a different finger it says
"Image converted
Did not find a match"
I tried throwing in a Serial.print after the led on and off statement but that did not show in the monitor. It seems like the sensor is able to ID the registered finger and recognize if a finger print is not registered.
- adafruit_support_mike
- Posts: 67485
- Joined: Thu Feb 11, 2010 2:51 pm
Re: ultra slim fingerprint sensor
Work through the code adding "made it this far" print statements, until you can track the flow of execution. Until you know that, it's nearly impossible to guess what needs to be fixed.
Please be positive and constructive with your questions and comments.