정보나눔

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

블루투스 , 초음파 이용한 2륜 rc카 질문합니다.
didtdjwns111 | 2018-12-03

블루투스로 2륜 rc카를 조종하는데 앞으로 가다가 전방에 장애물이 있으면

옆으로 회전하게끔 해서 작동할려고 밑에 이렇게 짜는데

약 2가지 문제가 있더라구요 

 
1. 속도를 바꿔도 양쪽 바퀴가 속도가 안맞아요
2. 틈틈히 블루투스 연결이 끊겨요
 
해결방안좀 알려주세요 ㅠㅠ
 
#include <SoftwareSerial.h>
SoftwareSerial BLUE( 2, 3); // RX, TX
 
int trig = 6;
int echo = 5;
 
const int AIA = 10;
const int AIB = 9;
const int BIA = 7;
const int BIB = 8;
 
byte Aspeed = 250;
byte Bspeed = 150;
 
void setup() {
  Serial.begin(9600);
  Serial.println("Serial start");
  BLUE.begin(9600);
  Serial.println("Also BLUE start");
  pinMode(echo, INPUT);
  pinMode(trig, OUTPUT);
}
 
void loop() {
  digitalWrite(trig,HIGH);
  delay(100);
  digitalWrite(trig,LOW);
  
  float duration, cm;
 
  duration = pulseIn(echo, HIGH);
  cm = ((float)(340 * duration) / 10000) / 2;
  Serial.println(cm);
  
  if (cm < 15) {
            analogWrite(AIA, 0);  analogWrite(AIB, 0);
            analogWrite(BIA, 0);  analogWrite(BIB, 0);
            delay(200);
            analogWrite(AIA, Aspeed);  analogWrite(AIB, 0);
            analogWrite(BIA, 0);  analogWrite(BIB, Bspeed);
            delay(420);
            analogWrite(AIA, 0);  analogWrite(AIB, 0);
            analogWrite(BIA, 0);  analogWrite(BIB, 0);
           }
       else {        
    if (BLUE.available()) {
      char a = BLUE.read();
      Serial.write(a);
      
      switch (a) {
        case 'f':
          analogWrite(AIA, Aspeed);  analogWrite(AIB, 0);
          analogWrite(BIA, Bspeed);  analogWrite(BIB, 0);
          break;
        case 'b':
          analogWrite(AIA, 0);  analogWrite(AIB, Aspeed);
          analogWrite(BIA, 0);  analogWrite(BIB, Bspeed);
          break;
        case 'l':
          analogWrite(AIA, Aspeed);  analogWrite(AIB, 0);
          analogWrite(BIA, 0);  analogWrite(BIB, Bspeed);
          break;
        case 'r':
          analogWrite(AIA, 0);  analogWrite(AIB, Aspeed);
          analogWrite(BIA, Bspeed);  analogWrite(BIB, 0);
          break;
        case 's':
          analogWrite(AIA, 0);  analogWrite(AIB, 0);
          analogWrite(BIA, 0);  analogWrite(BIB, 0);
          break;
      }
      delay(500);
       }
  }
이전글   |    도난방지 프로젝트 앱 질문 합니다.. 2018-12-02
다음글   |    irremote.h와 servo.h, tone함수를 같이 쓸수 있는 방법이 있나요?... 2018-12-04