안녕하세요. 제가 아두이노와 블루투스를 통해 마스터쪽에서 지문인식을 하면 슬레이브 쪽에있는 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
|