BASIC4MCU | 질문게시판 | 아두이노 코딩 질문입니다
페이지 정보
작성자 djaska 작성일2020-06-11 13:32 조회5,139회 댓글1건본문
아두이노로 지문인식센서 + 블루투스를 이용해 서보모터를 제어하는 것을 만들고 있습니다.
계속 둘중 하나밖에 실행이 안되서 질문을 해보니 아두이노는 소프트웨어 시리얼을 하나밖에 지원을 안해서 그런거라고 하더라구요
혹시 지문인식 센서를 0,1번의 하드웨어 핀으로 옮긴다면 밑의 코드를 어떻게 수정해야 하는지 질문드립니다.
코딩 초보자라서 많은 도움을 필요로합니다
#include <Adafruit_Fingerprint.h>
#include <SoftwareSerial.h>
#include <Servo.h>
int getFingerprintIDez();
Servo myservo;
SoftwareSerial mySerialF(2, 3);
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerialF);
int blueTx = 5; //Tx (블투 보내는핀 설정)
int blueRx = 6; //Rx (블투 받는핀 설정)
SoftwareSerial mySerialB(blueTx, blueRx); //시리얼 통신을 위한 객체선언
String myString = ""; //받는 문자열
void setup()
{
Serial.begin(9600);
myservo.attach(12); //12번핀 서보모터 연결
while (!Serial);
myservo.write(0); //서보 초기각도 0도 설정
Serial.println("Adafruit finger detect test");
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!");
} else {
Serial.println("Did not find fingerprint sensor :(");
while (1);
}
Serial.println("Waiting for valid finger....");
//mySerialB.begin(9600);
}
void loop() {
myservo.write(0); // 서보모터 초기 각도 설정
delay(60); // 서보모터 구동시간 15ms
//지문인식으로 서보제어
if(getFingerprintIDez() != -1){
//getFingerprintIDez() 함수 지문인식 실패시 -1 반환, 성공시 id 반환
// 반환값 -1 아닐 경우 지문 인식 성공이라고 판별
//getFingerprintIDez() 함수 내 서보모터 동작 명령 꺼내와서 아래쪽에 작성
myservo.write(90); // 도어 오픈에 필요한 각도 입력
delay(5000); //5초동안 서보모터 각도 유지
}
//블루투스를 통한 서보제어 (스마트폰 블루투스 앱에서 '1' 전달된다는 가정)
if(mySerialB.available()){
char bt;
bt = mySerialB.read();
if(bt == '1') {
myservo.write(90); // 도어 오픈에 필요한 각도 입력
delay(5000); //5초동안 서보모터 각도 유지
}
}
}
// 지문인식에 실패했다면 -1 리턴됨
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;
// 지문인식 성공
Serial.print("Found ID #");
Serial.print(finger.fingerID);
Serial.print(" with confidence of ");
Serial.println(finger.confidence);
return finger.fingerID;
}
댓글 1
조회수 5,139master님의 댓글
master 작성일
0, 1번핀을 사용하는 하드웨어 시리얼은 업로드 및 시리얼모니터용으로 사용하고 있으므로
이 것을 사용하는데에는 주의가 필요합니다.
아두이노 0번(RX)핀 <------1K저항 <---- 지문인식센서 TX
아두이노 1번(TX)핀 ---------------------> 지문인식센서 RX
저항을 1개 사용해서 하드웨어 충돌을 방지해야지 고장나지 않습니다.
또 한가지는 시리얼모니터를 사용하지 마세요