BASIC4MCU | 질문게시판 | 답변 : 아두이노간 블루투스 통신에 대해서 질문있습니다
페이지 정보
작성자 master 작성일2022-07-14 09:34 조회8,818회 댓글3건본문
블루투스를 사용해서 아두이노끼리 연결시켜 초음파센서로 측정된 값을 다른 아두이노에 보내서 모터를 움직이려고 합니다.
그런데 수신을 받는 아두이노의 시리얼 모니터에 초음파센서 값이 뜨지 않고 모터도 움직이지 않습니다.
어떡하면 값이 출력되고 모터를 움직일 수 있는지 알려주시면 감사하겠습니다. 아두이노는 둘다 2560 mega 입니다.
//--- 송신하는 코드 입니다.
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(6,7); // TX,RX
//
#define TRIG 3
#define ECHO 4
//
void setup(){
Serial.begin(9600);
bluetooth.begin(9600);
pinMode(TRIG,OUTPUT); //trig 발사
pinMode(ECHO,INPUT); //echo 받기
}
//
int duration=0;
//
void loop(){
digitalWrite(TRIG,1); delayMicroseconds(10); digitalWrite(TRIG,0);
duration=(pulseIn(ECHO,1)/29.0)/2;
Serial.print(duration); Serial.println("CM");
bluetooth.write(duration); // 블루투스에는 거리값 1바이트만 송신
delay(100);
}
//
//----------- 수신하여 모터를 움직이는 코드입니다
#include <SoftwareSerial.h>
SoftwareSerial bluetooth(6,7); // RX,TX
//
int motor_1=5,motor_2=4;
//
int old_dist,n,d;
int text=0;
//
void setup(){
Serial.begin(9600);
bluetooth.begin(9600);
pinMode(motor_1,OUTPUT); pinMode(motor_2,OUTPUT);
}
//
void motor_stp(){ digitalWrite(motor_1,0); digitalWrite(motor_2,0); } //dc모터 정지
void motor_fwd(){ digitalWrite(motor_1,1); digitalWrite(motor_2,0); } //dc모터 정방향
void motor_bwd(){ digitalWrite(motor_1,0); digitalWrite(motor_2,1); } //dc모터 역방향
//
void loop(){
if(Serial.available()){ bluetooth.write(Serial.read()); }
//
if(bluetooth.available()){
text=bluetooth.read(); // 블루투스에서 거리값을 받아서
Serial.println(text); // 시리얼모니터에 거리값을 문자열로 출력하고
if((old_dist+1)<=text){
n=text-old_dist; old_dist+=n; d=n*1000;
Serial.print(old_dist); Serial.print("Cm,cnt="); Serial.println(n);
motor_fwd(); delay(d); motor_stp();
}
else if((old_dist-1)>=text){ // 1cm 이상 가까워지면
n=old_dist-text; old_dist-=n; d=n*1000;
Serial.print(old_dist); Serial.print("Cm,cnt="); Serial.println(n);
motor_bwd(); delay(d); motor_stp();
}
}
}
이 코드를 돌려보세요
댓글 3
조회수 8,818뉴비에오님의 댓글
뉴비에오 작성일감사합니다! 정말 죄송하지만 혹시 'int old_dist,n,d;'하고 'old_dist+=n; ' 이 부분의 코드의 의미를 알려주실 수 있으신가요?
master님의 댓글
master
시리얼모니터에 표시되니까 의미를 파악하는데 어렵지 않을겁니다.
뉴비에오님의 댓글
뉴비에오
넵 알겠습니다!