BASIC4MCU | 질문게시판 | 아두이노 메가 블루투스 통신 질문좀 드립니다!
페이지 정보
작성자 dongeun9 작성일2020-08-31 22:43 조회4,074회 댓글1건본문
void fingerprint() {
//지문인식센서에 지문감지 체크 및 등록지문 여부 확인
uint8_t ret=getFingerprintIDez();
if(ret==FINGERPRINT_NOTFOUND)
{
Serial.print("Not Exist ");
act_siren();
}
else if(ret==FINGERPRINT_OK)
{
b=1;
open_flg=OPEN;
err_cnt=0;
}
else if(ret!= FINGERPRINT_NOFINGER)
{
err_cnt++;
}
//통신이 10회 이상 지속적으로 안되면 문을 개방
if(err_cnt > 10)
{
act_siren();
handle_servo(OPEN_DOOR);
open_flg=OPEN;
err_cnt=0;
}
delay(50);
}
void loop() {
char key = keypad.getKey();
while (a == 0){
if (Serial1.available()){
char r=Serial1.read();
Serial.write(Serial1.read());
if(r=='O' )
{ handle_servo(OPEN_DOOR);} //open
if(r=='F' )
{ handle_servo(CLOSE_DOOR);} //close
}
password();
}
while (b == 0){
if (Serial1.available()){
char r=Serial1.read();
Serial.write(Serial1.read());
if(r=='O' )
{ handle_servo(OPEN_DOOR);} //open
if(r=='F' )
{ handle_servo(CLOSE_DOOR);} //close
}
fingerprint();
}
int sum = a+b;
if(sum == 2){
handle_servo(OPEN_DOOR);
delay(2000);
while(key!='*'){
key=keypad.getKey();
}
a=0; b=0;
handle_servo(CLOSE_DOOR);
}
}
//지문센서에 지문이 인식되면 등록된 지문인지를 체크하는 함수
int getFingerprintIDez() {
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");
err_cnt++;
return p;
case FINGERPRINT_IMAGEFAIL:
Serial.println("Imaging error");
return p;
default:
Serial.println("Unknown error");
return p;
}
p = finger.image2Tz();
switch (p) {
case FINGERPRINT_OK:
Serial.println("Image converted");
break;
case FINGERPRINT_IMAGEMESS:
Serial.println("Image too messy");
return p;
case FINGERPRINT_PACKETRECIEVEERR:
Serial.println("Communication error");
err_cnt++;
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;
}
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!");
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error");
err_cnt++;
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!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
return FINGERPRINT_OK;
// return finger.fingerID;
}
현재 지문인식센서와 loop문 부분만 발췌한 것입니다. 여기서 제가 블루투스로 안드로이드에 지문인식센서 감지 할 시 블루투스로 전송을 하고싶은데 코드 작성을 어떻게 해야할지 감이 안잡힙니다 ㅠㅠ 센서 값이 있는 것이 아니라서.. 어떻게 작성을 해야할지요,,?
지문인식센서를 감지할 때나 저 서브모터가 OPEN_DOOR일시 둘 중 아무렇게나 전송을 하면되는데 질문드립니당
예를 들면
if(지문인식 센서 감지 / 서브모터가 open 각도로 열릴 시 이 두 개 중 하나를 설정하여) {
String s = "sensor";
Serial1.println(s);//스마트폰으로 버튼상태 출력
}
이런식으로 해야하는지 감이 잘 안와서 여쭤봅니다!!
댓글 1
조회수 4,074master님의 댓글
master 작성일
지문센서를 인식 할 때마다
open이면 close로
close면 open으로 변경하고 싶다는 말인가요?
변수를 하나 정해서 초기값으로 close로 선언한 후
지문센서를 인식할 때마다
close면 open으로 출력하고 변수를 open으로 변경
open이면 close로 출력하고 변수를 close로 변경하세요