정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

지문인식하면 블루투스통신으로 LCD화면에 나타나게 하고싶습니다.
지수 | 2017-06-22

안녕하세요.  제가 아두이노와 블루투스를 통해 마스터쪽에서 지문인식을 하면 슬레이브 쪽에있는 lcd 화면에 글자를 나타내는것을 하고 있는데, 3가지의 지문을 등록 해놓은 상태입니다. 그럼 lcd 화면에 각각 다른 문자를 뜨게 하고싶은데 어떻게 수정해야할까요...계속 안 되네요ㅠ지문이 틀리면 NO!라고는 잘 뜨는데 등록 되어있는 지문일 때는 모든 문자가 다 나와요...

지문인식기는 UART FINGERPRINT 입니다. 지금 라이브러리가 삭제된 상태라서 구할 수는 없어요!

 

 

<마스터 소스>

#include <SoftwareSerial.h>

SoftwareSerial BT(12,11);
 #include <MECHA_UARTFingerprint.h>
 #define NEW_USER_ID 1 //새로 등록할 사용자의 아이디를 이곳에서 설정합니다.
 #define NEW_USER_ID 2

 #define NEW_USER_ID 3
 #define NEW_USER_PRIV 3 //새로 등록할 사용자의 권한을 이곳에서 설정합니다.
 SoftwareSerial sofSeri(2,3);
MECHA_UARTFinger fin = MECHA_UARTFinger(&sofSeri);
 void setup() {
    BT.begin(9600);
   Serial.begin(9600);
   fin.begin();
   fin.AddUser1(NEW_USER_ID,NEW_USER_PRIV);
   //NEW_USER_ID는 사용자 ID, NEW_USER_PRIV은 사용자 권한. AddUser1,2,3 3회 반복
  //the NEW_USER_ID is user ID, NEW_USER_PRIV is users Privilege. AddUser1,2,3  3times repeat
   fin.GetRespon();
   //반환값을 수신합니다. 함수마다 계속 반복하는것을 추천드립니다.
   //always have the Respon
   if(ACK_SUCCESS == fin.GetFeedback()){
     Serial.println("Success add user 1/3");
   }
   fin.AddUser2(NEW_USER_ID,NEW_USER_PRIV);
   fin.GetRespon();
   if(ACK_SUCCESS == fin.GetFeedback()){
     Serial.println("Success add user 2/3");
   }
   fin.AddUser3(NEW_USER_ID,NEW_USER_PRIV);
   fin.GetRespon();
   if(ACK_SUCCESS == fin.GetFeedback()){
     Serial.println("Success add user 3/3");
   }
 }
 
 
 void loop() {
  {

  if (Serial.available())

    BT.write(Serial.read());

}

   delay(5000);
   fin.Compare();
   //지문을 매칭합니다.
   //Compare the fingerprint
   fin.GetRespon(); 
   if(ACK_NOUSER != fin.GetFeedback()){
     Serial.print("USER ID: ");
     BT.write('1');
     Serial.println(fin.GetPacket());
   }
   else if(ACK_NOUSER != fin.GetFeedback()){
     Serial.print("USER ID: ");
     BT.write('2');
     Serial.println(fin.GetPacket());
   }

   else if(ACK_NOUSER != fin.GetFeedback()){
     Serial.print("USER ID: ");
     BT.write('3');
     Serial.println(fin.GetPacket());
   }
   else {
     Serial.print("ERROR Feedback is: ");
     BT.write('0');
     Serial.println(fin.GetFeedback(),HEX);
   }
 }

 

 

 

 

 

 

<슬레이브 소스>

#include <MECHA_UARTFingerprint.h>

#include <LiquidCrystal.h>
 #include <SoftwareSerial.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
SoftwareSerial BT(8,9); //Tx, Rx

void setup() {
  lcd.begin(16,2);
  lcd.clear();
    BT.begin(9600);
}

void loop(){
int value ;
if(BT.available())
{
value = BT.read();

if (value == '1') {

lcd.setCursor(0,0);
lcd.print("I'm Moon-Young!");
delay(1000);
}

else if (value == '2') {

  lcd.setCursor(0,0);
  lcd.print("I'm Ji-Su!");
  delay(1000);
}

else if (value == '3') {

  lcd.setCursor(0,0);
  lcd.print("I'm Jun-Hee!");
  delay(1000);
}

else {
lcd.setCursor(0,0);
lcd.print("NO!");
}


delay(1000);
lcd.clear();
}
}

 

 

 

마스터 아래쪽 은

 fin.GetRespon(); 
   if(ACK_NOUSER != fin.GetFeedback()){ 
    char ch;
    if("USER ID: 1"){
      BT.write('1');
    }
              else if("USER ID: 2"){
          BT.write('2');
    }
   }

이렇게도 바꿔봤어요...부탁드립니다!1

이전글   |    아두이노가 안됩니다.. 2017-06-20
다음글   |    아두이노 메가 2017-06-22