정보나눔

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

블루투스 통신이 되지 않습니다.
공벌레 | 2017-06-01

가속도 센서값을 다른 아두이노로 넘겨줘 그 값으로 dc모터를 제어하는 코드를 짜려고 합니다. 

마스터 코드:

#include <SPI.h>
SoftwareSerial btSerial(8,9);
const int MPU=0x68;
int AcX, AcY, AcZ, Tmp, GyX, GyY, GyZ;
void get6050();
int xpos;
int ypos;
void setup()
{
  Serial.begin(9600);
  btSerial.begin(9600); 
  Wire.begin();
  Wire.beginTransmission(MPU);  
  Wire.write(0x6B);
  Wire.write(0);
  Wire.endTransmission(true);
}
void loop()
{
    get6050();
    xpos=map(AcX,-16383,16383,0,180);//가속도 센서 x축값을 매핑함
    ypos=map(AcY,-16383,16383,0,180);
    btSerial.write(xpos);//블루투스로 값 전송
    Serial.print("xpos=");
    Serial.println(xpos);//xpos 값은 정상적으로 나오는데 블루투스로 전송하면 값이 이상하게 보내짐
    delay(100);
}
void get6050(){
  Wire.beginTransmission(MPU);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(MPU,14,true);
  AcX=Wire.read()<<8|Wire.read();
  AcY=Wire.read()<<8|Wire.read();
  AcZ=Wire.read()<<8|Wire.read();
  Tmp=Wire.read()<<8|Wire.read();
  GyX=Wire.read()<<8|Wire.read();
  GyY=Wire.read()<<8|Wire.read();
  GyZ=Wire.read()<<8|Wire.read();
}

슬레이브 코드:

#include <SoftwareSerial.h>
SoftwareSerial BTSerial(8,9);
void setup() {
  Serial.begin(9600);
  BTSerial.begin(9600);
  pinMode(2, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(10, OUTPUT);
}

 

void loop() {
    if(BTSerial.available()){
    int pos;
    pos =BTSerial.read(); 
    Serial.print("pos=");
    Serial.println(pos);
    digitalWrite(2,HIGH);
    digitalWrite(3,LOW);
    digitalWrite(7,HIGH);
    digitalWrite(8,LOW);
    analogWrite(5,pos);
    analogWrite(10,pos);
    delay(10);}
}

이렇게 넣었는데 슬레이브 아두이노의 시리얼 모니터에서 아무것도 프린트가 안되네요. 가속도 센서값은 마스터 아두이노에서 프린트 되는 것을 확인했습니다. 결국 통신 문제인데 뭐가 문제인지 모르겠네요... 도와주세요

이전글   |    아두이노 컴파일 에러 질문있어요 2017-05-31
다음글   |    아두이노-블루투스-앱인벤터 연결 질문드립니다ㅜㅜ... 2017-06-01