#include <Servo.h>
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
SoftwareSerial Serial2(2,3);
Adafruit_Fingerprint finger1 = Adafruit_Fingerprint(&Serial2);
//int door1 = 8;
//int door2 = 11;
int ledVerde = 11; //GPIO5
int ledRosso = 13; //GPIO5
bool trovato = true;
Servo myservo;
double angle;
//fplabas
//Adafruit_Fingerprint finger2 = Adafruit_Fingerprint(&Serial3);
void setup() {
Serial.begin(9600);
myservo.attach(7); //definisce il pin 9 come pin per il controllo del servo
//pinMode(door2, OUTPUT);
// pinMode(door1, OUTPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledRosso, OUTPUT);
// pinMode(Buzzer, OUTPUT);
//
//digitalWrite(door2, LOW);
//digitalWrite(door1, LOW);
finger1.begin(57600);
//finger2.begin(57600);
if (finger1.verifyPassword()) {
Serial.println("Found fingerprint sensors!");
} else {
Serial.println("Did not find any fingerprint sensors :(");
//while (1) { delay(1); }
}
finger1.getTemplateCount();
//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 () {
int risposta = getFingerprintdoor2();
delay(50);
if(risposta >=1 && risposta<=10 && trovato){
Serial.print("Ciao, ora ti faccio entrare... ");Serial.println(risposta);
risposta = 0;
trovato = false;
angle = 90;
myservo.write(angle);
delay(500);
Serial.println("Apertura porta");
/*
angle = 0;
myservo.write(angle);
delay(2000);
Serial.println("Chiusura porta");
*/
}
//Fingerprint Sensor Labas
//getFingerprintdoor1();
//delay(50);
}
uint8_t getFingerprintdoor2() {
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 && finger1.confidence>80) {
Serial.println("Found a print match!");
digitalWrite(ledVerde, HIGH);
// sendsms(textForSMS + " Noah", f1001);
// Serial.println(textForSMS);
// Serial.println("message sent.");
delay(3000);
digitalWrite(ledVerde, LOW);
trovato = true;
//delay(1000);
// Serial.print(finger1.fingerID);
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error: FINGERPRINT_PACKETRECIEVEERR");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
Serial.println("Did not find a match: FINGERPRINT_NOTFOUND");
digitalWrite(ledRosso,HIGH);
delay(3000);
digitalWrite(ledRosso,LOW);
// digitalWrite(Buzzer,HIGH);
return p;
} else {
Serial.println("Unknown error");
return p;
}
Serial.print("FINGER ID: "); Serial.println(finger1.fingerID);
return finger1.fingerID;
}