Bluetooth Araba Gecikme Sorunu

Bluetooth ile kontrol edilen araba yaptım. Çarpmayı önlemek için HC-SR04 uzaklık sensörünü kullandım ama sensörün kodları yüzünden büyük bir gecikme yaşanıyor. Bu sorunu nasıl çözebilirim?

#define trigPin 12
#define echoPin 13
long duration, distance;

void setup(){
  Serial.begin(9600);
  pinMode(7,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(trigPin,OUTPUT);
  pinMode(echoPin,INPUT);  
}

void loop(){
  mesafe();
  if(distance<=10){
    digitalWrite(7,LOW);
    digitalWrite(6,LOW);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
  }
  if(distance>10){
  if(Serial.available()){
    char data=Serial.read();
    analogWrite(9,100);
    analogWrite(10,100);
    if(data=='F'){
      digitalWrite(7,HIGH);
      digitalWrite(6,LOW);
      digitalWrite(5,LOW);
      digitalWrite(4,HIGH);
    }
    if(data=='B'){
      digitalWrite(7,LOW);
      digitalWrite(6,HIGH);
      digitalWrite(5,HIGH);
      digitalWrite(4,LOW);
    }
    if(data=='L'){
      digitalWrite(7,LOW);
      digitalWrite(6,LOW);
      digitalWrite(5,LOW);
      digitalWrite(4,HIGH);
    }
    if(data=='R'){
      digitalWrite(7,HIGH);
      digitalWrite(6,LOW);
      digitalWrite(5,LOW);
      digitalWrite(4,LOW);
    }
    if(data=='S'){
      digitalWrite(7,LOW);
      digitalWrite(6,LOW);
      digitalWrite(5,LOW);
      digitalWrite(4,LOW);
    }
  }
}
}
void mesafe(){
  digitalWrite(trigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration / 58.2;
  delay(50);
}

Merhaba,
void mesafe() yerine direk mesafe kodlarını void loop’a koymayı dener misin? Ve hcsr-04 olmadan önceden de gecikmelimiydi çünkü telefonun bluetooth bağlantısından da kaynaklanabiliyor. :slightly_smiling_face:

Maalesef yine aynı gecikme yaşanıyor. Sensörü kullanmadan önce gecikme yoktu. Tam ölçmedim ama telefondan tuşa bastığımda 5 saniye gibi bir gecikme yaşanıyor.

#define trigPin 12
#define echoPin 13
long duration, distance;

void setup(){
  Serial.begin(9600);
  pinMode(7,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(trigPin,OUTPUT);
  pinMode(echoPin,INPUT);  
}

void loop(){
  digitalWrite(trigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration / 58.2;
  delay(50);
  if(distance<=10){
    digitalWrite(7,LOW);
    digitalWrite(6,LOW);
    digitalWrite(5,LOW);
    digitalWrite(4,LOW);
  }
  if(distance>10){
  if(Serial.available()){
    char data=Serial.read();
    analogWrite(9,100);
    analogWrite(10,100);
    if(data=='F'){
      digitalWrite(7,HIGH);
      digitalWrite(6,LOW);
      digitalWrite(5,LOW);
      digitalWrite(4,HIGH);
    }
    if(data=='B'){
      digitalWrite(7,LOW);
      digitalWrite(6,HIGH);
      digitalWrite(5,HIGH);
      digitalWrite(4,LOW);
    }
    if(data=='L'){
      digitalWrite(7,LOW);
      digitalWrite(6,LOW);
      digitalWrite(5,LOW);
      digitalWrite(4,HIGH);
    }
    if(data=='R'){
      digitalWrite(7,HIGH);
      digitalWrite(6,LOW);
      digitalWrite(5,LOW);
      digitalWrite(4,LOW);
    }
    if(data=='S'){
      digitalWrite(7,LOW);
      digitalWrite(6,LOW);
      digitalWrite(5,LOW);
      digitalWrite(4,LOW);
    }
  }
}
}

Sorunu çözdüm. Kod kullanmak yerine internetten bulduğum kütüphaneyi kullandım.