Hi,
I'm trying to make a fingerprint lock with the use of Involt to be able to use it from a website as well. I can make noth the fingerprint scanner and Involt work separately but not together.
Here is my code
#include <Adafruit_Fingerprint.h>
int solenoidPin = 3;
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 5);
int involtPin[14] = {}; //equals involt.pin.P in app
String involtString[2] ={}; //equals involt.pin.S in app
char involt[16];
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
String fname;
int getFingerprintIDez();
void setup()
{
Serial.begin(9600);
while (!Serial); // For Yun/Leo/Micro/Zero/...
delay(100);
Serial.println("\n\nAdafruit finger detect test");
// set the data rate for the sensor serial port
finger.begin(57600);
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...");
{
pinMode(3, OUTPUT); //Sets that pin as an output
}
}
void loop() // run over and over again
{
getFingerprintIDez();
delay(50); //don't ned to run this at full speed.
digitalWrite(13, HIGH);
}
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;
} {
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
digitalWrite(solenoidPin, HIGH);
delay(5000);
digitalWrite(12, LOW);
digitalWrite(solenoidPin, LOW);
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);
digitalWrite(12, HIGH);
digitalWrite(13, LOW);
digitalWrite(solenoidPin, HIGH);
delay(5000);
digitalWrite(12, LOW);
digitalWrite(solenoidPin, LOW);
}
else
{
involtReceive();
digitalWrite(3, involtPin[3]);
}
}
void involtReceive(){
if(Serial.available()>0) {
Serial.readBytesUntil('\n',involt,sizeof(involt));
int pin;
if (involt[0] == 'P'){
int value;
sscanf(involt, "P%dV%d", &pin, &value);
involtPin[pin] = value;
}
else if (involt[0] == 'S'){
char value[sizeof(involt)];
sscanf(involt, "S%dV%s", &pin, &value);
involtString[pin] = value;
}
else if (involt[0] == 'F'){
char value[sizeof(involt)];
sscanf(involt, "F%s", &value);
fname = value;
};
memset(involt,0,sizeof(involt));
};
};
void involtSend(int pinNumber, int sendValue){
Serial.print('A');
Serial.print(pinNumber);
Serial.print('V');
Serial.print(sendValue);
Serial.println('E');
Serial.flush();
};
void involtSendString(int pinNumber, String sendString){
Serial.print('A');
Serial.print(pinNumber);
Serial.print('V');
Serial.print(sendString);
Serial.println('E');
Serial.flush();
};
void involtSendFunction(String functionName){
Serial.print('F');
Serial.print(functionName);
Serial.println('E');
Serial.flush();
};