BASIC4MCU | 질문게시판 | 답변 : 아두이노와 휴대폰을 HC-06으로 연결시켜서 블루투스연결이 끊기면 부저에서 소리가 나게 할려하는데 어떻게 해야하나요
페이지 정보
작성자 master 작성일2022-05-24 16:43 조회3,896회 댓글0건본문
void pairingCheckSend () {
unsigned long presentTime = millis();
if ( presentTime >= (previousCheckSendTime+1000) ) {
previousCheckSendTime = presentTime;
hc06.print("c");
Serial.println ( "Check 'c' Send to Phone. " );
}
}
//
void pairingCheckCome () {
unsigned long presentTime = millis();
if ( (millis()) >= (previousPairingCheckTime+2000) ) {
if ( !(isThereCheckSignal) ) {
blueConnect = false;
isThereCheckSignal = false;
previousCheckSendTime = 0;
previousPairingCheckTime = 0;
Serial.println ("judged that the Bluetooth connection is disconnected.");
}
else {
isThereCheckSignal = false;
previousPairingCheckTime = millis();
}
}
}
//
void hc06Receive () {
String answer = "";
while (hc06.available()){
char val = hc06.read();
answer += val;
unsigned long atThisTime = millis();
do{ ; }while (atThisTime+5 > millis() ); // 데이터 끊김 방지
}
}
//
void loop(){
if(blueConnect){ pairingCheckSend(); pairingCheckCome();
//
if(hc06.available()){ point=hc06.read(); }
//
if(point==false){ tone(tpin,261.6, 800); delay(200); noTone(tpin); }
//
hc06Receive();
}
point변수는 처음에 0으로 초기화 되어 있기 때문에 통신 없이도 소리가 발생하는 것이죠
pairingCheckSend(); pairingCheckCome(); hc06Receive();
이 함수들을 모두 공부하셔야 할 것 같은데요
파란색 부분에서 소리를 내야 하는 것 아닌가 모르겠습니다.
별 것 아닌 내용인데 상당히 복잡하게 작성했군요
간단한 내용을 복잡하게 작성하는 것도 (상당히 쓸데없는) 기술입니다.
//
unsigned long t,t1;
//
void loop(){
t=millis();
if(t-t1>=1000){ t1=t; hc06.write('c'); } // 매 1초마다 'c' 송신
//
if(hc06.available()){ point=hc06.read(); cnt=0; }
//
if(++cnt>=3000){ tone(tpin,261.6,800); delay(200); noTone(tpin); } //3초 이상 수신이 없으면 부저
//
delay(1);
}
복잡한 코드 걷어버리고
1초마다 'c' 전송하고
3초이상 수신하지 않으면 부저울리고
이 정도면 연결이 끊어졌는지 알 수 있지 않을까요?
3초가 길어서 더 빨리 체크하고 싶다면
//
unsigned long t,t1;
//
void loop(){
t=millis();
if(t-t1>=100){ t1=t; hc06.write('c'); } // 매 0.1초마다 'c' 송신
//
if(hc06.available()){ point=hc06.read(); cnt=0; }
//
if(++cnt>=300){ tone(tpin,261.6,800); delay(200); noTone(tpin); } //0.3초 이상 수신이 없으면 부저
//
delay(1);
}
전송시간과 체크 시간을 1/10로 줄이면 되겠죠
댓글 0
조회수 3,896등록된 댓글이 없습니다.