Problem With Adafinger print

For other supported Arduino products from Adafruit: Shields, accessories, etc.

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
bernadusdl
 
Posts: 2
Joined: Fri May 29, 2015 7:16 am

Problem With Adafinger print

Post by bernadusdl »

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

User avatar
adafruit_support_rick
 
Posts: 35092
Joined: Tue Mar 15, 2011 11:42 am

Re: Problem With Adafinger print

Post by adafruit_support_rick »

Does the unmodified example "fingerprint" sketch work?

User avatar
bernadusdl
 
Posts: 2
Joined: Fri May 29, 2015 7:16 am

Re: Problem With Adafinger print

Post by bernadusdl »

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

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);
}
And this is my sketch if i dont use new function

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);
}

User avatar
adafruit_support_rick
 
Posts: 35092
Joined: Tue Mar 15, 2011 11:42 am

Re: Problem With Adafinger print

Post by adafruit_support_rick »

bernadusdl wrote:But I dont know why Fingerprint and RTC can't work at the same function
Sorry. I don't know either. There should be no conflict at all.

User avatar
pixlux
 
Posts: 10
Joined: Fri Jun 05, 2015 6:48 am

Re: Problem With Adafinger print

Post by pixlux »

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

User avatar
adafruit_support_rick
 
Posts: 35092
Joined: Tue Mar 15, 2011 11:42 am

Re: Problem With Adafinger print

Post by adafruit_support_rick »

Let's continue this on your other thread:
viewtopic.php?f=22&t=73336&p=379906#p380096

Locked
Please be positive and constructive with your questions and comments.

Return to “Other Arduino products from Adafruit”