소프트웨어 시리얼과 하드웨어 시리얼에 각각 마스터모드, 슬레이브모드의 HC-06모듈을 연결해서 아두이노 간 연결되어서 서로 센서값을 주고 받으며 명령을 실행하는 회로를 구상 중인데 배선할 때 하드웨어 시리얼을 사용할 블루투스 모듈은 아래 그림처럼 브레드보드에 꽂고 각각 RXD, TXD만 0번, 1번에 꽂으면 될까요? 그리고 아두이노 우노에 블루투스 모듈 두 개를 사용하는데 코드 상 문제도 있을까요..? +추가로 조도센서 모듈과 pir센서를 함께 사용할 때 배선할 때 유의할 점이 있나요?
ps. 구상 중인 회로의 코드는 아래 첨부하였습니다! 항상 도움이 되는 답변 감사합니다^^
#include <SoftwareSerial.h> //수신용 블루투스는 TX,RX핀에 연결
SoftwareSerial blue2(10, 11); //블루투스의 Tx, Rx핀을 설정 (송신용 블루투스)
int cds = A0; // 조도센서를 아날로그 A0핀으로 설정
int led = 3; // LED를 디지털 3핀으로 설정
int pir = 7; // pir센서를 디지털 7핀으로 설정
int state = 0; // LED ON/OFF 명령 설정(0: LOW, 1: HIGH)
int fadeAmount = 5; //불 서서히 켜기를 위한 값 설정
int brightness = 50; // 기본 밝기값
char INBYTE; // 블루투스 통신용 함수 설정
void setup() {
Serial.begin(9600); // 시리얼모니터(수신블루투스) 통신속도를 9600으로 설정
blue2.begin(9600); // 2번 블루투스(송신블루투스) 통신속도를 9600으로 설정
pinMode(3, OUTPUT); // LED 핀을 OUTPUT으로 설정
pinMode(7, INPUT); // 인체감지센서 입력담당으로 설정
digitalWrite(3, LOW); // 초기 LED값을 0FF로 설정해주기
while (!Serial) {
; //블루투스가 연결되지 않았다면 코드 실행을 멈추고 무한 반복
}
}
void loop() {
int cdsValue = analogRead(cds); // 조도센서값 입력 받음
if (cdsValue < 50) { //조도센서 측정값이 일정 수치 이하일 때
analogWrite(3, 50); // LED 출력 50 (총 255 중에)
state = digitalRead(7); // PIR 센서값 입력 받음
if (state == HIGH) { // pir센서에서 인식된다면
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
if (brightness <= 0 || brightness >= 200) {
brightness = 200; //빛을 200까지 천천히 출력
}
blue2.write( '1' );
}
else { while (Serial.available()); //pir센서에 인식이 안될 때
INBYTE = Serial.read(); //블루투스 1에 입력된 문자 출력
if( INBYTE == '1' ){ //입력된 문자가 1이라면 빛 밝기 높이기
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
if (brightness <= 0 || brightness >= 200) {
brightness = 200;
}
blue2.write( '0' );//불 끄라는 신호 보냄
delay(300); // 빛 서서히 높이기 위해 설정한 값
}
else if( INBYTE == '0' ) { //입력된 문자가 0이라면 빛 밝기 낮추기
analogWrite(3, 50) ;
}
}
}
else {
digitalWrite(led, LOW); //조도센서 측정값이 일정 수치 이상일 때 LED off
}
}
다른 센서들 연결에 지장은 없고, 0,1번 핀에 연결되는 모듈은 시리얼통신처럼 쓰면 됩니다
2개 연결하기 구글링해보면 사료 있을 거에요 찾아보고 참고하면서 진행하세요
pc와 통신 포기하면 디버깅할 때 힘들 수 있거든요