Example code for Arduino-Fingerprint Matching
Requirements
-
Hardware
- DFRduino Leonardo (or similar) x 1
- ID809 Capacitive Fingerprint Module x1
- Dupont Wires
-
Software
- Arduino IDE
- Download and install the ID809 Library. (About how to install the library?)
Connection Diagram
Leonardo Connection
UNO Connection

Sample Code 4-Fingerprint Matching
Collect the fingerprint image and compare it with the fingerprints in the fingerprint library. If the comparison succeeds, the green light will be on and the ID number will be printed. If it fails, the red light will be on and the matching failure will be prompted.
/*!
* @file fingerprintMatching.ino
* @brief Gather fingerprint and compare it with fingerprints in fingerprint library
* @n Experiment Phenomenon:capture fingerprint image and compare it with all fingerprints in the fingerprint library
If matched successfully, light up green LED and print ID number. Return 0 when failed.
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @licence The MIT License (MIT)
* @author [Eddard]([email protected])
* @version V1.0
* @date 2020-03-19
* @get from https://www.dfrobot.com
* @url https://github.com/cdjq/DFRobot_ID809
*/
#include <DFRobot_ID809.h>
/*Use software serial when using UNO or NANO*/
#if ((defined ARDUINO_AVR_UNO) || (defined ARDUINO_AVR_NANO))
#include <SoftwareSerial.h>
SoftwareSerial Serial1(2, 3); //RX, TX
#define FPSerial Serial1
#else
#define FPSerial Serial1
#endif
DFRobot_ID809 fingerprint;
//String desc;
void setup(){
/*Init print serial port*/
Serial.begin(9600);
/*Init FPSerial*/
FPSerial.begin(115200);
/*Take FPSerial as communication serial port of the fingerprint module*/
fingerprint.begin(FPSerial);
/*Wait for Serial to open*/
while(!Serial);
/*Test whether the device can properly communicate with mainboard
Return true or false
*/
while(fingerprint.isConnected() == false){
Serial.println("Communication with device failed, please check connection");
/*Get error code information*/
//desc = fingerprint.getErrorDescription();
//Serial.println(desc);
delay(1000);
}
}
void loop(){
uint8_t ret = 0;
/*Set fingerprint LED ring mode, color, and number of blinks
Can be set as follows:
Parameter 1:<LEDMode>
eBreathing eFastBlink eKeepsOn eNormalClose
eFadeIn eFadeOut eSlowBlink
Parameter 2:<LEDColor>
eLEDGreen eLEDRed eLEDYellow eLEDBlue
eLEDCyan eLEDMagenta eLEDWhite
Parameter 3:<number of blinks> 0 represents blinking all the time
This parameter will only be valid in mode eBreathing, eFastBlink, eSlowBlink
*/
fingerprint.ctrlLED(/*LEDMode = */fingerprint.eBreathing, /*LEDColor = */fingerprint.eLEDBlue, /*blinkCount = */0);
Serial.println("Please press down your finger");
/*Capture fingerprint image, Disable the collection timeout function
If succeed return 0, otherwise return ERR_ID809
*/
if((fingerprint.collectionFingerprint(/*timeout=*/0)) != ERR_ID809){
/*Set fingerprint LED ring to quick blink in yellow 3 times*/
fingerprint.ctrlLED(/*LEDMode = */fingerprint.eFastBlink, /*LEDColor = */fingerprint.eLEDYellow, /*blinkCount = */3);
Serial.println("Capturing succeeds");
Serial.println("Please release your finger");
/*Wait for finger to release
Return 1 when finger is detected, otherwise return 0
*/
while(fingerprint.detectFinger());
/*Compare the captured fingerprint with all the fingerprints in the fingerprint library
Return fingerprint ID(1-80) if succeed, return 0 when failed
*/
ret = fingerprint.search();
/*Compare the captured fingerprint with a fingerprint of specific ID
Return fingerprint ID(1-80) if succeed, return 0 when failed
*/
//ret = fingerprint.verify(/*Fingerprint ID = */1);
if(ret != 0){
/*Set fingerprint LED ring to always ON in green */
fingerprint.ctrlLED(/*LEDMode = */fingerprint.eKeepsOn, /*LEDColor = */fingerprint.eLEDGreen, /*blinkCount = */0);
Serial.print("Matching succeeds,ID=");
Serial.println(ret);
}else{
/*Set fingerprint LED ring to always ON in red*/
fingerprint.ctrlLED(/*LEDMode = */fingerprint.eKeepsOn, /*LEDColor = */fingerprint.eLEDRed, /*blinkCount = */0);
Serial.println("Matching fails");
}
}else{
Serial.println("Capturing fails");
/*Get error code information*/
//desc = fingerprint.getErrorDescription();
//Serial.println(desc);
}
Serial.println("-----------------------------");
delay(1000);
}
Expected Result 4

Was this article helpful?
