BASIC4MCU | 질문게시판 | 답변 : 답변 : 블루투스와 키패드를 이용한 금고(재업로드) 코딩좀 도와주세요 ㅠㅠ
페이지 정보
작성자 훈빵이 작성일2019-06-13 03:01 조회4,265회 댓글1건본문
아두이노 UNO, 16키패드, HC-06 사용하고있습니다.
#include <LiquidCrystal.h>
#include <Servo.h>
#include <SoftwareSerial.h>
#include <Keypad.h>
char PW[]="1455"; //비밀번호
const byte ROWS=4,COLS=4;
byte rowPins[ROWS]={11,10,9,8};
byte colPins[ROWS]={7,6,5,4};
char keys[ROWS][COLS]={
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
Keypad keypad=Keypad(makeKeymap(keys),rowPins,colPins,ROWS,COLS);
//
int tru=0; //비밀번호가 맞는지 확인
int count=0;
Servo myservo;
int Tx=2;
int Rx=3;
SoftwareSerial mySerial(Tx,Rx);
String AString="";
//
void setup(){
Serial.begin(9600);
myservo.attach(12); myservo.write(0);
}
//
void Su(){ myservo.write(180); Serial.println("open the door"); } // 성공했을시 모터를 돌려주며 성공메세지 보내기
void Fa(){ myservo.write( 90); Serial.println("close the door"); } // 실패했을시 모터를 돌려주며 실패메세지 보내기
void re(){ tru=0; count=0; Serial.println("password reset"); } // 비밀번호 입력중#을 입력하면 입력중인 비밀번호 초기화
//
void loop(){
char key=keypad.getKey(); // 키패드 입력받는 부분
if(key){
Serial.println(key);
if(key==PW[count])tru++; // 입력 비밀번호가 맞을시 tru++
count++;
//
if(key=='#')re(); // 초기화버튼 //초기화 함수
//
if(count==4){ // count 개수가 비밀번호 개수와 같을 시
if(tru==4)Su(); // 성공함수
else Fa(); // 실패함수
tru=0; count=0;
}
}
//
while(mySerial.available()){
char myChar=(char)mySerial.read();
AString+=myChar;
delay(5);
}
//
if(!AString.equals("")){
Serial.println("input value: "+AString);
if(AString=="on"){ myservo.write(150); digitalWrite(8,HIGH); }
else { myservo.write( 0); digitalWrite(8,LOW); }
AString="";
}
}
이렇게 작성했는데 키패드는 되지만 블루투스는 여전히 안되네요
댓글 1
조회수 4,265master님의 댓글
master 작성일
int Tx=2;
int Rx=3;
SoftwareSerial mySerial(Tx,Rx);
2번핀을 블루투스 TX에 연결해야 합니다.
//
연결이 제대로 되었는데도 동작하지 않는다면
다른 회로를 모두 떼어내고 블루투스만 연결한 후
블루투스 예제만으로 정상동작하는지 체크하세요
//
블루투스만으로 정상동작한다면
질문의 소스에서 블루투스 핀을 변경해서 돌려보세요
일부 핀은 블루투스로 사용하지 못하는 경우가 있습니다.(다른 기능 때문에)