답변 : 아두이노 레오나르도와 hc-06 블루투스 모듈 질문드립니다
페이지 정보
작성자 master 작성일19-05-24 09:52 조회3,954회 댓글0건본문
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2019-05-24 오전 9:50:16
// by Ok-Hyun Park
//
아두이노레오나르도에 hc-06 모듈을 연결하여 핸드폰 어플로 전송하려는 시스템을 구현 중입니다.
//
#include <SoftwareSerial.h>
SoftwareSerial mySerial(11,9); //블루투스의 Tx,Rx핀을 2번 3번핀으로 설정
//
void setup(){
Serial.begin(9600); while(!Serial){ }
Serial.println("Hello World!");
mySerial.begin(9600);
}
//
void loop(){
if(mySerial.available()){ Serial.write(mySerial.read()); }
if(Serial.available()){ mySerial.write(Serial.read()); }
}
//
이코드를 이용하면 시리얼 모니터에서 핸드폰 어플로 정보는 갑니다.
하지만
//
#include <SoftwareSerial.h>
//
SoftwareSerial voiceSerial(8,7);
SoftwareSerial BTSerial(11,9);
//
void setup(){
voiceSerial.begin(9600);
BTSerial.begin(9600);
voiceSerial.listen();
}
//
char id,accuracy;
//
void loop(){
if(voiceSerial.available()){
id=voiceSerial.read();
accuracy=voiceSerial.read();
switch(id){
case '0': BTSerial.println("정지"); break;
case '1': BTSerial.println("빨강"); break;
case '2': BTSerial.println("초록"); break;
case '3': BTSerial.println("파랑"); break;
}
}
}
//
이 코드를 이용하면 레오나르도에서 핸드폰 어플로 전송이 되지 않습니다.
어떤 문제가 있어 전송이되지 않는지 이해를 할 수가 없습니다.
SoftwareSerial voiceSerial(8,7);
SoftwareSerial BTSerial(11,9);
소프트웨어 시리얼을 2개 사용하면
두 개 동시에 수신이 불가능하고, 1개만 수신이 가능한데
listen() 으로 지정합니다.
작성한 소스에 문제가 있는 부분은 얼핏 봐서는 보이지 않습니다.
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2019-05-24 오전 9:54:48
// by Ok-Hyun Park
//
#include <SoftwareSerial.h>
//
SoftwareSerial voiceSerial(8,7);
SoftwareSerial BTSerial(11,9);
//
void setup(){
BTSerial.begin(9600);
voiceSerial.begin(9600);
voiceSerial.listen();
}
//
void loop(){
BTSerial.println("정지"); delay(1000);
BTSerial.println("빨강"); delay(1000);
BTSerial.println("초록"); delay(1000);
BTSerial.println("파랑"); delay(1000);
}
이 코드로 테스트 해보시고
SoftwareSerial BTSerial(11,9);
잘 안되면 핀도 변경해서 돌려보세요
또, 레오나르도는 USB로 시리얼통신을 하고 있으므로 시리얼모니터용으로 D0,D1핀을 사용하지 않습니다.
즉, 시리얼1을 사용하면 D0,D1핀으로 하드웨어 시리얼을 사용할 수 있습니다.
// MCU BASIC: https://www.basic4mcu.com
// DateTime : 2019-05-24 오전 9:58:48
// by Ok-Hyun Park
//
#include <SoftwareSerial.h>
//
SoftwareSerial voiceSerial(8,7);
//
void setup(){
Serial.begin(9600); while(!Serial){} // 시리얼모니터
Serial1.begin(9600); // 블루투스
voiceSerial.begin(9600);
}
//
char id,accuracy;
//
void loop(){
if(voiceSerial.available()){
id=voiceSerial.read();
accuracy=voiceSerial.read();
switch(id){
case '0': Serial.println("정지"); Serial1.println("정지"); break;
case '1': Serial.println("빨강"); Serial1.println("빨강"); break;
case '2': Serial.println("초록"); Serial1.println("초록"); break;
case '3': Serial.println("파랑"); Serial1.println("파랑"); break;
}
}
}
시리얼모니터와 블루투스에 동시에 송신하는 예제입니다.
소프트웨어 시리얼이 1개이므로 listen()은 없어도 됩니다.
댓글 : 0
조회수 : 3,954
등록된 댓글이 없습니다.