정보나눔

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

블루투스 통신 조언 부탁드립니다 re
min37 | 2018-11-01

마스터 슬레이브를 지정해서 통신하는데 처음엔 서보모터가 0도지정 때는 돌아가다가 안돌아갑니다. 코드 조언 부탁드립니다.

-마스터-

#include <SoftwareSerial.h>
int T = 2;
int R = 3;

int sensor1 = 7;
int sensor2 = 6;
int sensor3 = 5;
int val1 = 0;
int val2 = 0;
int val3 = 0;

SoftwareSerial my_blue(T, R);

void setup() {
my_blue.begin(9600);
Serial.begin(9600);
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
pinMode(sensor3, INPUT);

}

void loop() {

val1 = digitalRead(sensor1);
if(val1 == LOW){ 
my_blue.println('1');}

val2 = digitalRead(sensor2);
if(val2 == LOW) {
my_blue.println('2');}
  
val3 = digitalRead(sensor3); 
if(val3 == HIGH){
my_blue.println('3');}

delay(5000);

 

-슬레이브-

#include <SoftwareSerial.h> //시리얼 통신 라이브러리 호출
SoftwareSerial my_blue(2, 3);  //시리얼 통신을 위한 


#include "Servo.h" //서보 라이브러리 
Servo myservo; //서보객체

String myString=""; //받는 문자열
 
void setup() {
  myservo.attach(12);   //서보 시그널 핀설정
  myservo.write(0);     //서보 초기각도 0도 설정
  Serial.begin(9600);
  my_blue.begin(9600); //블루투스 시리얼 개방
}
 
void loop() {
  if(my_blue.available())  //my_blue 값이 있으면
  {
    byte data = my_blue.read();
    Serial.write(data);
      if(data == '1')
      {
        myservo.write(0);     
        delay(3000); 
        myservo.write(0);
        }   
      else if(data == '2')
      {
        myservo.write(45);     
        delay(3000); 
        myservo.write(0);
        }

      else if(data == '3')
      {
        myservo.write(90);     
        delay(3000); 
        myservo.write(0);
        }
}
}

 

한번 올렸었는데 마스터 코드 부분을 고쳤습니다. 혹시 이렇게 하면 구조가 맞는건가요? 만약 아니라면 Serial.print()로 출력한 문자를 Serial.read()로 읽어 my_blue.write()로 보내는 코드를 어떻게 구상해야하는지 조언 부탁드립니다.

이전글   |    오렌지보드 wifi로 미세먼지 정보 2018-11-01
다음글   |    아두이노 질문!! 2018-11-01