Code help grouping id fingerprint scanner


i have problem coding write between id, can me solve it?
i have fingerprint scanner project, want blink led 1pin output 5 id.
if write manually until 15 id scanner become slow return.
i frustating coding it
 {
   if(finger.fingerid==1) ==> possible id1 until id5?
  digitalwrite(12, high);
  delay(3000);
  digitalwrite(12, low);
  }

this code, slow return
code: [select]
/***************************************************
  example sketch our optical fingerprint sensor

  designed work adafruit bmp085 breakout
  ----> http://www.adafruit.com/products/751

  these displays use ttl serial communicate, 2 pins required
  interface
  adafruit invests time , resources providing open source code,
  please support adafruit , open-source hardware purchasing
  products adafruit!

  written limor fried/ladyada adafruit industries. 
  bsd license, text above must included in redistribution
 ****************************************************/


#include <adafruit_fingerprint.h>
#include <softwareserial.h>

int getfingerprintidez();

// pin #2 in sensor (green wire)
// pin #3 out arduino  (white wire)
softwareserial myserial(2, 3);
adafruit_fingerprint finger = adafruit_fingerprint(&myserial);

// on leonardo/micro or others hardware serial, use those! #0 green wire, #1 white
//adafruit_fingerprint finger = adafruit_fingerprint(&serial1);

void setup() 
{
  while (!serial);  // yun/leo/micro/zero/...
 
  serial.begin(9600);
  serial.println("adafruit finger detect test");
pinmode(11, output);
pinmode(12, output);
pinmode(10, output);
  // set data rate sensor serial port
  finger.begin(57600);
 
  if (finger.verifypassword()) {
    serial.println("found fingerprint sensor!");
  } else {
    serial.println("did not find fingerprint sensor :(");
    while (1);
  }
  serial.println("waiting valid finger...");
}

void loop()                     // run on , on again
{
  getfingerprintidez();
  delay(50);            //don't ned run @ full speed.
}

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 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 print match!");
  } else if (p == fingerprint_packetrecieveerr) {
    serial.println("communication error");
    return p;
  } else if (p == fingerprint_notfound) {
    serial.println("did not find match");
    return p;
  } else {
    serial.println("unknown error");
    return p;
  }   
 
  // found match!
 
  serial.print("found id #"); serial.print(finger.fingerid);
  serial.print(" confidence of "); serial.println(finger.confidence);

}
// 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 match!
  {
   if(finger.fingerid==1)
  digitalwrite(12, high);
  delay(3000);
  digitalwrite(12, low);
  }
  {
   if(finger.fingerid==2)
  digitalwrite(12, high);
  delay(3000);
  digitalwrite(12, low);
  }
  {
   if(finger.fingerid==3)
  digitalwrite(12, high);
  delay(3000);
  digitalwrite(12, low);
  }
  {
   if(finger.fingerid==4)
  digitalwrite(12, high);
  delay(3000);
  digitalwrite(12, low);
  }
  {
   if(finger.fingerid==5)
  digitalwrite(12, high);
  delay(3000);
  digitalwrite(12, low);
  }
 
  {
   if(finger.fingerid==6)
  digitalwrite(11, high);
  delay(3000);
  digitalwrite(11, low);
  }
    {
   if(finger.fingerid==7)
  digitalwrite(11, high);
  delay(3000);
  digitalwrite(11, low);
  }
    {
   if(finger.fingerid==8)
  digitalwrite(11, high);
  delay(3000);
  digitalwrite(11, low);
  }
    {
   if(finger.fingerid==9)
  digitalwrite(11, high);
  delay(3000);
  digitalwrite(11, low);
  }
    {
   if(finger.fingerid==10)
  digitalwrite(11, high);
  delay(3000);
  digitalwrite(11, low);
  }
 
  {
   if(finger.fingerid==11)
  digitalwrite(10, high);
  delay(3000);
  digitalwrite(10, low);
  }
   {
   if(finger.fingerid==12)
  digitalwrite(10, high);
  delay(3000);
  digitalwrite(10, low);
  }
   {
   if(finger.fingerid==13)
  digitalwrite(10, high);
  delay(3000);
  digitalwrite(10, low);
  }
   {
   if(finger.fingerid==14)
  digitalwrite(10, high);
  delay(3000);
  digitalwrite(10, low);
  }
   {
   if(finger.fingerid==15)
  digitalwrite(10, high);
  delay(3000);
  digitalwrite(10, low);
  }
 
  serial.print("found id #"); serial.print(finger.fingerid);
  serial.print(" confidence of "); serial.println(finger.confidence);
  return finger.fingerid;
}


thanks

code: [select]
{
   if(finger.fingerid==4)
  digitalwrite(12, high);
  delay(3000);
  digitalwrite(12, low);
  }


your problem have braces in wrong place.  written way, first line in block conditional.  delay call , call write pin low happen whether fingerid equals 4 or not.  getting 3 second delay every check regardless of whether matched or not.

if statements should written way:

code: [select]

   if(finger.fingerid==4){
  digitalwrite(12, high);
  delay(3000);
  digitalwrite(12, low);
  }


the code block starts after if statement, not before.


Arduino Forum > Using Arduino > Programming Questions > Code help grouping id fingerprint scanner


arduino

Comments