BASIC4MCU | 질문게시판 | 지문인식 서보모터 제어관련
페이지 정보
작성자 doii123 작성일2019-11-12 14:06 조회6,486회 댓글1건본문
-키패드와 비밀번호 입력시 서보모터 제어 코드
#include <Keypad.h>
#include <Servo.h>
int tru=0; // 비밀번호가 맞는지 확인
int count=0;
char PW[4]={'1','2','3','4'}; //비밀번호
const byte ROWS = 4;
const byte COLS = 3;
byte rowPins[ROWS] = {2, 3, 4, 5};
byte colPins[COLS] = {6, 7, 8};
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
Servo myservo
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
Serial.begin(9600);
myservo.attach(12)
}
void loop(){
char key = keypad.getKey(); // 키패드 입력받는 부분
if (key)
{
Serial.println(key);
if(key==PW[count]) //입력번호와 비밀번호가 맞을시 count,tru++
{
count++;
tru++;
}
else if(key!=PW[count])//입력번호와 비밀번호가 틀릴시 count만 ++
{
count++;
}
if(key=='#')//초기화버튼
re();//초기화 함수
if(count==4)//count개수가 비밀번호 개수와 같을 시
{
if(tru==4)
Su();//성공함수
else
Fa();//실패함수
tru=0;
count=0;
}
}
}
void Su()//성공했을시 모터를 돌려주며 성공메세지 보내기
{
myservo.write(180);
Serial.println("open the door");
}
void Fa()//실패했을시 모터를 돌려주며 실패메세지 보내기
{
myservo.write(0);
Serial.println("close the door")
}
void re()//비밀번호 입력중 #을 입력하면 비밀번호 입력중인 비밀번호 초기화
{
tru=0;
count=0;
Seial.println("password reset");
}
와
-지문등록은 완료 한 상태에서 지문을 인식하는 지문인식 코드
#include <Adafruit_Fingerprint.h> //Adafruit_Fingerprint.h를 라이브러리에 포함
// 레오나르도/마이크로의 경우, 0번 핀에 흰색 선, 1번 핀에 주황색 선을 연결하십시오.
// #define mySerial Serial1
// 센서의 TX선을 아두이노 2번 핀에 연결(주황색 선)
// 센서의 RX선을 아두이노 3번 핀에 연결(흰색 선)
#include <SoftwareSerial.h> //SoftwareSerial.h를 라이브러리에 포함
SoftwareSerial mySerial(10, 11); //시리얼 통신 핀 설정
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);
void setup()
{
Serial.begin(9600); //시리얼 통신 시작, 통신 속도는 9600
while (!Serial);
delay(100); //0.1초 대기
Serial.println("\n\nAdafruit finger detect test");
// 센서 직렬 포트의 데이터 속도 설정
finger.begin(57600);
if (finger.verifyPassword()) {
Serial.println("Found fingerprint sensor!"); //센서가 연결 되었습니다.
} else {
Serial.println("Did not find fingerprint sensor :("); //센서가 연결되지 않았습니다.
while (1) { delay(1); }
}
finger.getTemplateCount();
Serial.print("Sensor contains "); Serial.print(finger.templateCount); Serial.println(" templates");
Serial.println("Waiting for valid finger...");
}
void loop()
{
getFingerprintIDez(); //지문이 스캐너에 등록되어 있는지 확인
delay(50);
}
uint8_t getFingerprintID() {
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"); //통신 오류
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"); //통신 오류
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;
}
// OK converted!
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!"); //지문이 일치합니다.
} else if (p == FINGERPRINT_PACKETRECIEVEERR) {
Serial.println("Communication error"); //통신 오류
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); //시리얼 모니터에 ID
Serial.print(" with confidence of "); Serial.println(finger.confidence);
return finger.fingerID;
}
// returns -1 if failed, otherwise returns ID #
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;
// found a match!
Serial.print("Found ID #"); Serial.print(finger.fingerID);
Serial.print(" with confidence of "); Serial.println(finger.confidence);
return finger.fingerID;
}
를 합쳐서 등록된 지문일때 서보모터가 구동하도록 만들려고 하는데 어떻게 해야할까요?
댓글 1
조회수 6,486master님의 댓글
master 작성일
if (p == FINGERPRINT_OK) {
Serial.println("Found a print match!"); //지문이 일치합니다.
이 부분에서 서보모터 구동에 관련된 코드를 작성하세요
}