My project was to open the door from inside and outside the room using fingerprint sensors, currently I used separate arduino on 2 different fingerprint sensor. Please help, my arduino detected only 1 fingerprint sensor when I try to connect them both on 1 arduino. ps: I connected the fingerprint sensor to digital pins (2,3) and (10,11) of the arduino mega. Thank you in advance...
//Here is my code
//for Relay
int in1 = 8; //pin for opening door
int in2 = 9; //pin for buzzer
#include (<)Adafruit_Fingerprint.h>
//it (<) i use only to post the code
//Arduino Mega
SoftwareSerial mySerial1(2, 3); //for fingeprint sensor outside
SoftwareSerial mySerial2(10, 11);//for fingeprint sensor inside
Adafruit_Fingerprint finger1 = Adafruit_Fingerprint(&mySerial1);
Adafruit_Fingerprint finger2 = Adafruit_Fingerprint(&mySerial2);
void setup()
{
Serial.begin(115200);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
digitalWrite(in1, HIGH);
digitalWrite(in2, HIGH);
while (!Serial);
delay(100);
finger1.begin(57600);
finger2.begin(57600);
if (finger1.verifyPassword() and finger2.verifyPassword()) { //To verify if 2
fingerprint sensor is working
Serial.println("Found fingerprint sensors!");
} else {
Serial.println("Did not find any fingerprint sensor!");
while (1) { delay(1); }
}
finger1.getTemplateCount(); //To show the numbers of enrolled fingerprint in sensor
finger2.getTemplateCount();
Serial.print("Fingerprint Sensor1 contains ");
Serial.print(finger1.templateCount); Serial.println(" templates");
Serial.print("Fingerprint Sensor2 contains ");
Serial.print(finger2.templateCount); Serial.println(" templates");
Serial.println("Waiting for valid finger...");
}
void loop()
{
//for fingeprint sensor outside the door
getFingerprintID1();
delay(50);
//for fingeprint sensor inside the door
getFingerprintID2();
delay(50);
}
uint8_t getFingerprintID1() {
uint8_t p = finger1.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 = finger1.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 = finger1.fingerFastSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!");
digitalWrite(in1, LOW); //Door will open for 5 seconds
delay(5000);
digitalWrite(in1, HIGH);
delay(1000);
Serial.print(finger1.fingerID);
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
//Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
digitalWrite(in2,LOW); //if the fingerprint did not recognize buzzer will be ON
delay(1000);
digitalWrite(in2,HIGH);
return p;
} else {
//Serial.println("Unknown error");
return p;
}
return finger1.fingerID;
}
uint8_t getFingerprintID2() {
uint8_t p = finger2.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 = finger2.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 = finger2.fingerFastSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!");
digitalWrite(in1, LOW);
delay(3000);
digitalWrite(in1, HIGH);
delay(1000);
Serial.print(finger2.fingerID);
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
//Serial.println("Communication error");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match");
digitalWrite(in2,LOW);
delay(1000);
digitalWrite(in2,HIGH);
return p;
} else {
//Serial.println("Unknown error");
return p;
}
return finger2.fingerID;
}
{}
button or pressing Control+K.