아두이노 조이스틱 아날로그 값을 받은 후 몇 이상이면 1, 몇 이하면 2. 이런식으로 조이스틱의 값에 따라 변수안에 숫자를 넣은 후 그 숫자를 다른 아두이노에게 블루투스로 보내 받은 값이 1이면 모터 a와 b를 앞으로 2이면 뒤로 3이면 정지로 설정하였습니다. 하지만 블루투스가 값을 전송하지 못하는 것 같습니다. 프로그램에 무엇이 잘 못됬을까요?
#include<SoftwareSerial.h>
SoftwareSerial btSerial(2,3);
const int udlow = 300;
const int udhigh = 450;
const int lrlow = 300;
const int lrhigh = 450;
int ud;
int lr;
char lrdirection;
char uddirection;
void setup() {
// put your setup code here, to run once:
btSerial.begin(9600);
Serial.begin(9600);
}
void loop() {
lrdirection = 0;
uddirection = 0;
ud=analogRead(0);
lr=analogRead(1);
if(ud>udhigh){
lrdirection='1';
Serial.println(lrdirection);
delay(100);
btSerial.write(lrdirection);
}
else if(ud<udlow){
lrdirection='2';
Serial.println(lrdirection);
btSerial.write(lrdirection);
delay(100);
}
else{
uddirection='3';
btSerial.write(uddirection);
Serial.println(uddirection);
delay(100);
}
}
이게 마스터 부분
#include<SoftwareSerial.h>
SoftwareSerial btSerial(2,3);
int in1x = 10;
int in2x = 4;
int in3x = 5;
int in4x = 6;
int enAx = 11;
int enBx = 7;
char buffer[20];
char bufferindex=0;
void setup() {
pinMode(in1x, OUTPUT);
pinMode(in2x, OUTPUT); //각 포트 출력으로 사용
pinMode(in3x, OUTPUT);
pinMode(in4x, OUTPUT);
btSerial.begin(9600);
Serial.begin(9600);//시리얼모니터 사용
}
void loop() {
while(btSerial.available()){
buffer[bufferindex]=btSerial.read();
bufferindex++;}
int indata=atoi(buffer);
//입력된 데이터 in_data에 저장
if(indata!=0) {
Serial.println(indata);}
delay(100);
for(int a=0; a<21;a++){
buffer[a]=NULL;
}//친구가 리스트에 값을 넣어보라고 하여 해보았지만 결과는 똑같이 되지 않았습니다.
bufferindex=0;
if(indata == '1') //입력된 데이터가 '1'이라면x축 앞으로
{
digitalWrite(in1x, HIGH);
digitalWrite(in2x, LOW);
digitalWrite(in3x, HIGH);
digitalWrite(in4x, LOW);
analogWrite(enAx,255);
analogWrite(enBx,255);//앞으로 회전
}
else if(indata == '2') //입력된 데이터가 '2'라면x축 뒤로
{
digitalWrite(in1x, LOW);
digitalWrite(in2x, HIGH);
digitalWrite(in3x, LOW);
digitalWrite(in4x, HIGH);
analogWrite(enAx,255);
analogWrite(enBx,255);//뒤로 회전 (어떤 방향으로 꽂았느냐에 따라서 방향 반대) }
else if(indata == '3')//정지
{
digitalWrite(in1x, LOW);
digitalWrite(in2x, LOW);
digitalWrite(in3x, LOW);
digitalWrite(in4x, LOW);
}}//슬레이브 부분
|