Dear Adafruit admin
I use adafruit library for fingeprint in this link https://github.com/adafruit/Adafruit-Fi ... gerprint.h
And I got a problem, when i use getImage(), my program will reset to beginning. I combine Fingerprint with RTC and use Arduino Uno board.
Is there an explanation about this?
Thanks
Problem With Adafinger print
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
- adafruit_support_rick
- Posts: 35092
- Joined: Tue Mar 15, 2011 11:42 am
Re: Problem With Adafinger print
Does the unmodified example "fingerprint" sketch work?
- bernadusdl
- Posts: 2
- Joined: Fri May 29, 2015 7:16 am
Re: Problem With Adafinger print
The example sketch is work.
I already solved this problem, by make new function for RTC DS1307. But I dont know why Fingerprint and RTC can't work at the same function
And this is my final sketch
And this is my sketch if i dont use new function
I already solved this problem, by make new function for RTC DS1307. But I dont know why Fingerprint and RTC can't work at the same function
And this is my final sketch
Code: Select all
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal.h>
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
#include <Ethernet.h>
#include <SPI.h>
SoftwareSerial mySerial (2,3);
Adafruit_Fingerprint finger=Adafruit_Fingerprint(&mySerial);
int id;
RTC_DS1307 rtc;
int days;
int months;
int years;
int hours;
int minutes;
int seconds;
int totalsec1;
int totalsec2;
String data,date,time;
LiquidCrystal lcd (A2,A3,7,6,5,4);
bool stats=0,statm=0,statp=0;
byte mac[]={0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[]="testing.ngrok.io";
IPAddress ip(192,168,0,177);
EthernetClient client;
void setup() {
Serial.begin(9600);
Wire.begin();
rtc.begin();
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
lcd.begin(16,2);
finger.begin(57600);
if(Ethernet.begin(mac)==0){
Serial.println("Failed to configure Ethernet using DHCP");
Ethernet.begin(mac,ip);
}
delay(1000);
Serial.println("connecting...");
if (finger.verifyPassword())
{
Serial.println("Found fingerprint sensor!");
} else
{
Serial.println("Did not find fingerprint sensor :(");
}
Serial.println("Waiting for valid finger...");
}
void loop() {
rtcfunction();
date="";
time="";
data="";
makestring();
if(hours>=6&&minutes>=30&&0<=totalsec1&&totalsec1<=5400)
{
statm=0;
statp=1;
digitalWrite(A0, HIGH);
digitalWrite(A1, LOW);
getFingerprintID();
if(stats==1)
{
makedata();
senddata();
stats=0;
lcd.setCursor(0,0);
lcd.print("MENGIRIM DATA ");
delay(3000);
}
}
else if(hours>=16&&0<=totalsec2&&totalsec2<=5400)
{
statm=1;
statp=0;
digitalWrite(A0, HIGH);
digitalWrite(A1, LOW);
getFingerprintID();
if(stats==1)
{
makedata();
senddata();
stats=0;
lcd.setCursor(0,0);
lcd.print("MENGIRIM DATA ");
delay(3000);
}
}
else
{
digitalWrite(A0, LOW);
digitalWrite(A1, HIGH);
lcd.setCursor(0,0);
lcd.print("ABSEN DITUTUP ");
}
lcd.setCursor(0,1);
lcd.print(date);
lcd.print(" ");
lcd.print(time);
lcd.print(" ");
delay(1000);
}
void rtcfunction(){
DateTime rtcdata = rtc.now();
years=rtcdata.year();
months=rtcdata.month();
days=rtcdata.day();
hours=rtcdata.hour();
minutes=rtcdata.minute();
seconds=rtcdata.second();
DateTime dt0(years,months,days,6,30,0);
DateTime dt1(years,months,days,16,0,0);
DateTime dt2(years,months,days,hours,minutes,seconds);
TimeSpan ts0=dt2-dt0;
TimeSpan ts1=dt2-dt1;
totalsec1=ts0.totalseconds();
totalsec2=ts1.totalseconds();
Serial.println(totalsec1);
Serial.println(totalsec2);
}
void makestring(){
date= String (years);
date.concat("-");
date.concat(months);
date.concat("-");
date.concat(days);
time= String (hours);
time.concat(":");
time.concat(minutes);
}
void makedata(){
time.concat(":");
time.concat(seconds);
if (statm==0&&statp==1)
{
data= String("ID=");
data.concat(id);
data.concat("&&");
data.concat("tanggal=");
data.concat(date);
data.concat("&&");
data.concat("waktum=");
data.concat(time);
data.concat("waktup=00:00:00");
}
if (statm==1&&statp==0);
{
data= String("ID=");
data.concat(id);
data.concat("&&");
data.concat("tanggal=");
data.concat(date);
data.concat("&&");
data.concat("waktup=");
data.concat(time);
data.concat("waktum=00:00:00");
}
}
void senddata(){
if(client.connect(server,80))
{
Serial.println("connected");
client.print("GET /absen/coba.php?");
client.print(data);
client.println(" HTTP/1.1");
client.println("Host:testing.ngrok.io");
client.println("Connection:close");
client.println();
client.stop();
}
else{
Serial.println("connection failed/n");
}
delay(300000);
}
uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
lcd.setCursor(0,0);
lcd.print("IMAGE TAKEN ");
break;
case FINGERPRINT_NOFINGER:
lcd.setCursor(0,0);
lcd.print("SILAHKAN ABSEN ");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
lcd.setCursor(0,0);
lcd.print("COM. ERROR ");
return p;
case FINGERPRINT_IMAGEFAIL:
lcd.setCursor(0,0);
lcd.print("IMAGE ERROR ");
return p;
default:
lcd.setCursor(0,0);
lcd.print("UNKOWN ERROR ");
return p;
}
// OK success!
p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
lcd.setCursor(0,0);
lcd.print("IMAGE CONVERT ");
break;
case FINGERPRINT_IMAGEMESS:
lcd.setCursor(0,0);
lcd.print("IMAGE MESSY ");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
lcd.setCursor(0,0);
lcd.print("COM.ERROR ");
return p;
case FINGERPRINT_FEATUREFAIL:
lcd.setCursor(0,0);
lcd.print("NO FINGER FEAT.");
return p;
case FINGERPRINT_INVALIDIMAGE:
lcd.setCursor(0,0);
lcd.print("NO FINGER FEAT.");
return p;
default:
lcd.setCursor(0,0);
lcd.print("UNKOWN ERROR ");
return p;
}
// OK converted!
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
lcd.setCursor(0,0);
lcd.print("IMAGE CONVERT ");
stats=1;
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
lcd.setCursor(0,0);
lcd.print("COM.ERROR ");
return p;
} else if (p == FINGERPRINT_NOTFOUND) {
lcd.setCursor(0,0);
lcd.print("NOT FIND MATCH ");
return p;
} else {
lcd.setCursor(0,0);
lcd.print("UNKOWN ERROR ");
return p;
}
// found a match!
id=finger.fingerID;
lcd.setCursor(0,0);
lcd.print("ID=");
lcd.print(id);
lcd.print(" CONF=");
lcd.print(finger.confidence);
delay(3000);
}
Code: Select all
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal.h>
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
#include <Ethernet.h>
#include <SPI.h>
SoftwareSerial mySerial (2,3);
Adafruit_Fingerprint finger=Adafruit_Fingerprint(&mySerial);
int id;
RTC_DS1307 rtc;
int days;
int months;
int years;
int hours;
int minutes;
int seconds;
int totalsec1;
int totalsec2;
String data,date,time;
LiquidCrystal lcd (A2,A3,7,6,5,4);
bool stats=0,statm=0,statp=0;
byte mac[]={0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[]="testing.ngrok.io";
IPAddress ip(192,168,0,177);
EthernetClient client;
void setup() {
Serial.begin(9600);
Wire.begin();
rtc.begin();
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
lcd.begin(16,2);
finger.begin(57600);
if(Ethernet.begin(mac)==0){
Serial.println("Failed to configure Ethernet using DHCP");
Ethernet.begin(mac,ip);
}
delay(1000);
Serial.println("connecting...");
if (finger.verifyPassword())
{
Serial.println("Found fingerprint sensor!");
} else
{
Serial.println("Did not find fingerprint sensor :(");
}
Serial.println("Waiting for valid finger...");
}
void loop() {
DateTime rtcdata = rtc.now();
years=rtcdata.year();
months=rtcdata.month();
days=rtcdata.day();
hours=rtcdata.hour();
minutes=rtcdata.minute();
seconds=rtcdata.second();
DateTime dt0(years,months,days,6,30,0);
DateTime dt1(years,months,days,16,0,0);
DateTime dt2(years,months,days,hours,minutes,seconds);
TimeSpan ts0=dt2-dt0;
TimeSpan ts1=dt2-dt1;
totalsec1=ts0.totalseconds();
totalsec2=ts1.totalseconds();
Serial.println(totalsec1);
Serial.println(totalsec2);
date="";
time="";
data="";
makestring();
if(hours>=6&&minutes>=30&&0<=totalsec1&&totalsec1<=5400)
{
statm=0;
statp=1;
digitalWrite(A0, HIGH);
digitalWrite(A1, LOW);
getFingerprintID();
if(stats==1)
{
makedata();
senddata();
stats=0;
lcd.setCursor(0,0);
lcd.print("MENGIRIM DATA");
delay(3000);
}
}
else if(hours>=16&&0<=totalsec2&&totalsec2<=5400)
{
statm=1;
statp=0;
digitalWrite(A0, HIGH);
digitalWrite(A1, LOW);
getFingerprintID();
if(stats==1)
{
makedata();
senddata();
stats=0;
lcd.setCursor(0,0);
lcd.print("MENGIRIM DATA");
delay(3000);
}
}
else
{
digitalWrite(A0, LOW);
digitalWrite(A1, HIGH);
lcd.setCursor(0,0);
lcd.print("ABSEN DITUTUP");
}
lcd.setCursor(0,1);
lcd.print(date);
lcd.print(" ");
lcd.print(time);
lcd.print(" ");
delay(1000);
}
void makestring(){
date= String (years);
date.concat("-");
date.concat(months);
date.concat("-");
date.concat(days);
time= String (hours);
time.concat(":");
time.concat(minutes);
}
void makedata(){
time.concat(":");
time.concat(seconds);
if (statm==0&&statp==1)
{
data= String("ID=");
data.concat(id);
data.concat("&&");
data.concat("tanggal=");
data.concat(date);
data.concat("&&");
data.concat("waktum=");
data.concat(time);
data.concat("waktup=00:00:00");
}
if (statm==1&&statp==0);
{
data= String("ID=");
data.concat(id);
data.concat("&&");
data.concat("tanggal=");
data.concat(date);
data.concat("&&");
data.concat("waktup=");
data.concat(time);
data.concat("waktum=00:00:00");
}
}
void senddata(){
if(client.connect(server,80))
{
Serial.println("connected");
client.print("GET /absen/coba.php?");
client.print(data);
client.println(" HTTP/1.1");
client.println("Host:testing.ngrok.io");
client.println("Connection:close");
client.println();
client.stop();
}
else{
Serial.println("connection failed/n");
}
delay(300000);
}
uint8_t getFingerprintID() {
uint8_t p = finger.getImage();
switch (p) {
case FINGERPRINT_OK:
lcd.setCursor(0,0);
lcd.print("IMAGE TAKEN ");
break;
case FINGERPRINT_NOFINGER:
lcd.setCursor(0,0);
lcd.print("SILAHKAN ABSEN ");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
lcd.setCursor(0,0);
lcd.print("COM. ERROR ");
return p;
case FINGERPRINT_IMAGEFAIL:
lcd.setCursor(0,0);
lcd.print("IMAGE ERROR ");
return p;
default:
lcd.setCursor(0,0);
lcd.print("UNKOWN ERROR ");
return p;
}
// OK success!
p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
lcd.setCursor(0,0);
lcd.print("IMAGE CONVERT ");
break;
case FINGERPRINT_IMAGEMESS:
lcd.setCursor(0,0);
lcd.print("IMAGE MESSY ");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
lcd.setCursor(0,0);
lcd.print("COM.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) {
lcd.setCursor(0,0);
lcd.print("IMAGE CONVERT ");
stats=1;
} 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!
id=finger.fingerID;
lcd.setCursor(0,0);
lcd.print("ID=");
lcd.print(id);
lcd.print(" CONF=");
lcd.print(finger.confidence);
delay(3000);
}
- adafruit_support_rick
- Posts: 35092
- Joined: Tue Mar 15, 2011 11:42 am
Re: Problem With Adafinger print
Sorry. I don't know either. There should be no conflict at all.bernadusdl wrote:But I dont know why Fingerprint and RTC can't work at the same function
- pixlux
- Posts: 10
- Joined: Fri Jun 05, 2015 6:48 am
Re: Problem With Adafinger print
In file included from C:\Users\pc4less615\Documents\Arduino\libraries\boubess/Adafruit_Fingerprint.h:19:0,
from enroll.ino:17:
C:\Users\pc4less615\Documents\Arduino\libraries\SoftwareSerial/SoftwareSerial.h:95:16: error: conflicting return type specified for 'virtual void SoftwareSerial::write(uint8_t)'
virtual void write(uint8_t byte);
^
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26:0,
from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:29,
from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:223,
from C:\Users\pc4less615\Documents\Arduino\libraries\boubess/Adafruit_Fingerprint.h:18,
from enroll.ino:17:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:48:20: error: overriding 'virtual size_t Print::write(uint8_t)'
virtual size_t write(uint8_t) = 0;
^
Error compiling.
help me please
from enroll.ino:17:
C:\Users\pc4less615\Documents\Arduino\libraries\SoftwareSerial/SoftwareSerial.h:95:16: error: conflicting return type specified for 'virtual void SoftwareSerial::write(uint8_t)'
virtual void write(uint8_t byte);
^
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26:0,
from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:29,
from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:223,
from C:\Users\pc4less615\Documents\Arduino\libraries\boubess/Adafruit_Fingerprint.h:18,
from enroll.ino:17:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:48:20: error: overriding 'virtual size_t Print::write(uint8_t)'
virtual size_t write(uint8_t) = 0;
^
Error compiling.
help me please
- adafruit_support_rick
- Posts: 35092
- Joined: Tue Mar 15, 2011 11:42 am
Re: Problem With Adafinger print
Let's continue this on your other thread:
viewtopic.php?f=22&t=73336&p=379906#p380096
viewtopic.php?f=22&t=73336&p=379906#p380096
Please be positive and constructive with your questions and comments.