BASIC4MCU | 질문게시판 | 메가 블루투스로 센서 값? 전송 질문드립니다
페이지 정보
작성자 dongeun9 작성일2020-09-07 11:51 조회22,552회 댓글9건본문
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;
}
현재 모든 과정을 다 수행했고 마지막 1개만 남아서 이렇게 질문드립니다ㅠㅠ
제가 지금 구현하려는 것은 메가에서 블루투스를 통해 안드로이드로 지문인식센서에 감지시 or 서브모터의 각도가 열림상태로 바뀔시 or 등록되지 않은 지문 감지시 이 3개중에 아무거나 1개를 보내면 되는 상황인데 온도 습도 센서 이런것처럼 값이 딱 나오는 센서가 아니라 어떻게 보내야할지를 모르겠어서 질문드립니다..
loop문에서 어떻게 작성해야 블루투스를 통해 안드로이드로 저 센서가 감지 되었다는 것을 보낼 수 있을지 알려주시면 너무감사드립니다
현재 안드로이드에서는 블루투스를 통해 아두이노의 데이터를 받는 것까지 다 작성이 완료된 상태라 아두이노 코드만 저부분만 작성하면 되어 질문드립니다.
댓글 9
조회수 22,552master님의 댓글
master 작성일무엇을 원하는 것인지 이해를 하지 못하겠습니다.
dongeun9님의 댓글
dongeun9
그 지문인식센서에 등록되지 않은 지문이 감지될 시 그 순간에 아무 신호나 블루투스를 통해 안드로이드로 전송하는 것을 구현하고싶습니다
dongeun9님의 댓글
dongeun9
예를 들면 저 loop문에서
if(지문인식센서에 등록되지 않은 지문 감지 시)
{블루투스로 안드로이드에 아무 신호나 전송
}
master님의 댓글
master
//지문센서에 지문이 인식되면 등록된 지문인지를 체크하는 함수
int getFingerprintIDez() {
이 함수에서 등록되지 않은 지문 시에 무엇이 출력되는지를 체크하고
해당 case 문에서 시리얼 출력하면 되는 것 아닌가요?
dongeun9님의 댓글
dongeun9
음 그러면 지문등록시 변수 p를 블루투스를 통해 보내야하나요?? 저게 값은 매번 달라집니다 등록된 지문 감지 시 값이 100이상의 난수가 나오더라구요
dongeun9님의 댓글
dongeun9
이게 그 시리얼 블루투스 통신을하려면 loop문에서 해야하지 않나용?? loop문에서 그냥 바로 serial1.println(p)이런식으로 하면 값이전송이될려나용..?
master님의 댓글
master
해당 함수에서 원하는 내용(등록되지 않은 지문인식) 시 어느 case문이 실행 되는지부터 체크하세요
시리얼통신은 루프문에서 하든 다른 곳에서 하든 상관없습니다.
dongeun9님의 댓글
dongeun9
Serial.println("Did not find a match");
return p;
등록되지 않을 시 이부분이 실행됩니다 이때는 어떻게 코드를 작성해야 블루투스를 통해 전송할수있을지요?
master님의 댓글
master
아두이노 메가 사용중이고 시리얼1에 블루투스를 연결했다면
serial1.println(p)이런식으로 하면 값이전송 됩니다.
//
그게 아니라면 아두이노 블루투스 예제를 웹검색해서 공부해보세요
크게 다르지 않습니다.