정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

아두이노에 블루투스와 초음파동시 제어 방법
치도리 | 2019-06-22

dc 모터를 블루투스랑 초음파 센서를 같이 이용해서 제어해보고 싶은데 블루투스는 제어가 지금 되는데 초음파는 안되는 것 같더라구요 컴파일도 되고 업로드도 되는데 뭐가 문제인지 초보자인 저로서는 감이 잘 오지 않습니다.

밑에서 어떤 부분이 틀렸고 혹은 바꿔야 제어가 가능한지 고수분들께서  좀 알려주시면 좋겠습니다. 부탁드립니다~~

#include <SoftwareSerial.h>
SoftwareSerial BTS(3,2);
int motor=11;
int trig=13;
int echo=12;
void setup() {
  Serial.begin(9600);
  BTS.begin(9600);
  pinMode(trig,OUTPUT);
  pinMode(echo,INPUT);
  pinMode(motor,OUTPUT);
   
  

}

void loop() {
if(BTS.available()>0){
  char data=BTS.read();
  if(data=='b'){
    analogWrite(motor,50);
  }else if(data=='w'){
    analogWrite(motor,120);
  }else if(data=='c'){
    analogWrite(motor,255);
  }else if(data=='s'){
    analogWrite(motor,0);
  }
  digitalWrite(trig,LOW);
  delayMicroseconds(2);
  digitalWrite(trig,HIGH);
  delayMicroseconds(10);
  digitalWrite(trig,LOW);
  long duration = pulseIn(echo,HIGH);
  long distance = (duration*340)/2/10000;
  if(distance<=10){
    int spin = map(distance, 10,0,0,255);
  
  }
}
}

프로필사진

kocoafab 2019-06-24 08:56:47

안녕하세요.

 

올려주신 코드에 보시면 초음파센서로 동작하는 부분이 if(BTS.available()  > 0) 조건문 안에 있다보니, 블루투스를 통해 데이터가 들어올때만 초음파센서 코드를 동작하게 됩니다.

 

초음파와 따로 동작하시기 위해서는 초음파 측정부분을 조건문 밖으로 빼셔야 합니다.

 

추가로 블루투스와 초음파센서로 동시에 제어하게 될 경우 둘중에 하나로만 제어가 되게 됩니다.

(블루투스로 명령어를 넘겨도 초음파센서로만 동작하게 됩니다.)

 

그러니 예를들어 초음파센서로 거리를 측정하고 15cm 이하일때는 초음파센서로 동작하고 이상일 경우는 블루투스로 동작하게 한다던가 하는방식으로 조건을 1개로 줄여주시는 방법이 좋습니다.

이전글   |    스마트홈 관련 질문 드립니다. 2019-06-19
다음글   |    보드 Arduino/Genuino Uno 컴파일 에러뜨는데 뭐가 문제일까요..?... 2019-06-23