0

I made some simple code and car using 1 arduino, 1 hc-05, 2 L298N, and 4 batteries. I control them with the app Bluetooth RC controller on android. When I send a command on the app, the car sometimes has some delays, varying 4-8 seconds, sometimes it disconnects completely. Here is the code. I don't think the code has any problem and my friend brought up that the problem might be the distortion from a magnetic field because I use some lead to weld some wires

char t; 
int fr1= 2;
int fr2=3;
int fl1=12;
int fl2=13;
int br1=4;
int br2=5;
int bl1 = 7;
int bl2=8;
int Mfr=6;//speed setting
int Mfl=9;
int Mbr=10;
int Mbl=11;
float Speed;

void setup() {
pinMode(fr1,OUTPUT);      //fr1
pinMode(fr2,OUTPUT);      //fr2
pinMode(fl1,OUTPUT);      //fl1
pinMode(fl2,OUTPUT);      //fl2
pinMode(br1,OUTPUT);      //br1
pinMode(br2,OUTPUT);     //br2
pinMode(bl1,OUTPUT);     //bl1
pinMode(bl2,OUTPUT);     //bl2


Serial.begin(9600); 
 
}
 
void loop() {


  
if(Serial.available()){
  t = Serial.read();
  Serial.println(t);
}
 
if(t == 'F'){          
    digitalWrite(fr1, LOW);
    digitalWrite(fr2, HIGH);
    digitalWrite(fl1, LOW);
    digitalWrite(fl2, HIGH);
    digitalWrite(br1, LOW);
    digitalWrite(br2, HIGH);  
    digitalWrite(bl1, LOW);
    digitalWrite(bl2, HIGH);
}
 
else if(t == 'B'){      
    digitalWrite(fr1, HIGH);
    digitalWrite(fr2, LOW);
    digitalWrite(fl1, HIGH);
    digitalWrite(fl2, LOW);
    digitalWrite(br1, HIGH);
    digitalWrite(br2, LOW);  
    digitalWrite(bl1, HIGH); 
    digitalWrite(bl2, LOW);
}
 
else if(t == 'L'){     
    digitalWrite(fr1, LOW);
    digitalWrite(fr2, HIGH);
    digitalWrite(fl1, HIGH);
    digitalWrite(fl2, LOW);
    digitalWrite(br1, HIGH);
    digitalWrite(br2, LOW);
    digitalWrite(bl1, LOW);
    digitalWrite(bl2, HIGH);
}
 
else if(t == 'R'){      
    digitalWrite(fr1, HIGH);
    digitalWrite(fr2, LOW);
    digitalWrite(fl1, LOW);
    digitalWrite(fl2, HIGH);
    digitalWrite(br1, LOW);
    digitalWrite(br2, HIGH);
    digitalWrite(bl1, HIGH);
    digitalWrite(bl2, LOW);
}

else if(t == 'S'){      //STOP (all motors stop)
    digitalWrite(fr1, LOW);
    digitalWrite(fr2, LOW);
    digitalWrite(fl1, LOW);
    digitalWrite(fl2, LOW);
    digitalWrite(br1, LOW);
    digitalWrite(br2, LOW);
    digitalWrite(bl1, LOW);
    digitalWrite(bl2, LOW);
}

}

1 Answers1

0

Is it possible its gotten flooded by bytes, serial.read had to read? I imagine maybe the app is sending a lot of characters to the Arduino, is it possible to check/apply a (short) delay in that app?

RemyHx
  • 325
  • 3
  • 9