BASIC4MCU | 질문게시판 | 여러 개의 HC-06 값을 하나의 스마트폰으로 전송받는 코딩을 작성하려고 합니다
페이지 정보
작성자 봄빛 작성일2020-03-21 09:45 조회10,063회 댓글3건본문
초보인지라 블루투스 연결 중 어려움이 있어 조언을 구합니다.
아래와 같은 것을 만들고자 합니다.
1. 초음파 HC-SR04(15cm이상 150cm 이하)를 이용하여 통과를 확인하고자 합니다.
2. HC-SR04를 지날 경우 네오픽셀 불이 켜지고 소리가 나도록 합니다.
3. 통과 신호는 HC-06으로 스마트폰으로 전송하고자 합니다.
4. 위 1~3의 기능을 하는 기기 여러개를 통과하고 각각의 통과 여부를 스마트폰으로 전송하고자 합니다.
이렇게 시스템을 구현하는 중 3번과 4번 단계에서 어찌하지 못해 조언을 구합니다.
1. HC-SR04를 지날 경우 통과 신호를 스마트폰으로 전송하고자 한다면 코딩을 어떻게 해야 할까요? 변수 val값이 아닌 jump의 0,1 값으로 받고자 합니다.
2. HC-06을 여러 개의 아두이노에 설치하고자 합니다. 그리고 각각의 값을 스마트폰으로 전송받으려고 합니다. 이럴 경우 각각의 아두이노에서는 어떤 값으로 정의를 해야 스마트폰에서 별개로 인식받을 수 있을까요?
#include <SoftwareSerial.h>
#include <Wire.h>
#include <DFPlayer_Mini_Mp3.h>
#include <Adafruit_NeoPixel.h>
#include <afstandssensor.h>SoftwareSerial mySerial(10, 11); // RX, TX
SoftwareSerial BTSerial(7, 8); // RX, TX
Adafruit_NeoPixel strip = Adafruit_NeoPixel (8, 5, NEO_GRB + NEO_KHZ800);
AfstandsSensor afstandssensor(13, 12);#define las_beam 3
#define las_button 4
#define select 6
#define led 5bool jump = false;
int jump_success = 0;
int previous = LOW;
int state = LOW;
int reading;
long time = 0;
long devounce = 10;
void setup () {
Serial.begin (9600);
mySerial.begin (9600);
BTSerial.begin (9600);
mp3_set_serial (mySerial); //set softwareSerial for DFPlayer-mini mp3 module
delay(1); //wait 1ms for mp3 module to set volume
mp3_set_volume (10);
pinMode (las_beam, OUTPUT);
pinMode (las_button, INPUT);
pinMode (select, INPUT);
pinMode (led, OUTPUT);
strip.setBrightness(80);
strip.clear();
strip.begin();
}
void loop () {
int val = afstandssensor.afstandCM();
reading = digitalRead(las_button);
if ((reading == HIGH ) && (previous == LOW) && (millis() - time > devounce)){
if (state == HIGH){
state = LOW;
}
else {
state = HIGH;
}
digitalWrite(las_beam, state);
}
if ((jump == false) && (val < 150) && (val > 15)) {
jump == true;
jump_success++;
Serial.print("jump_success = ");
Serial.println(jump_success);
Serial.print("distance = ");
Serial.println(afstandssensor.afstandCM());
mp3_play();
for(int i=0; i<9; i++) {
strip.setPixelColor (i, strip.Color(255,0,0));
strip.show();
}
delay(5000);
for(int i=0; i<9; i++) {
strip.setPixelColor (i, strip.Color(0,0,0));
strip.show();
}
}
if (digitalRead(select) == HIGH) {
mp3_next();
}
while (BTSerial.available()) {
byte BT_data = BTSerial.read();
Serial.write(BT_data);
if (BT_data =='1') {
digitalWrite(3,HIGH);
}
if (BT_data == '2') {
digitalWrite(3,LOW);
}
}
while (Serial.available()){
byte Serial_data = Serial.read();
Serial.print("Serial_data = ");
Serial.println(Serial_data);
if(Serial_data == '1') {
digitalWrite(3,HIGH);
BTSerial.write('1');
}
else {
Serial.print("fail");
Serial.println(Serial_data);
digitalWrite(3,LOW);
BTSerial.write('0');
}
}}
댓글 3
조회수 10,063master님의 댓글
master 작성일
http://blog.naver.com/PostView.nhn?blogId=roboholic84&logNo=220789820175&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView
HC-06은 다중연결이 안되는 것으로 알고 있는데요 검색해보니 위와 같은 글도 있습니다.
확실히 되는지는 직접 해보면 알 수 있겠죠
master님의 댓글
master 작성일
현재 스마트폰에서 여러개의 HC-06이 페어링된 상태라면
각각의 HC-06 연결 포트가 다를 것입니다만
각각의 아두이노에서도 다른 컴맨드를 전송할 수도 있습니다.
1번 아두이노 '0','1' 전송
2번 아두이노 '2','3' 전송
3번 아두이노 '4','5' 전송
봄빛님의 댓글
봄빛 작성일감사합니다~^^ 막막하던 것이 열리네요~^^