Bluetooth ile Ultrasonik Mesafe Sensörü Çalışmıyor

baris5259

Üye
Katılım
1 May 2019
Mesajlar
2
Puanları
1
Yaş
24
Merhaba arkadaşlar,

Projem: HC-05 Bluetooth kontrollü ve Ultrasonik Mesafe Sensörlü (park sensörlü) araba.
Malzemelerim
Ardunio UNO R3 Klon
HC-05 Bluetooth Modülü
HC-SR04 Ultrasonik Mesafe Sensörü

Projemde hem bluetooth ile rc arabamı kontrol etmek istiyorum hem de park sensörü olarak ultrasonik mesafe sensörünü kullanmak istiyorum. Fakat ikisi aynı anda çalışmıyor. Mesafe ölçme kodunu loop'tan hemen sonra yazarsam ultrasonik sensör mesafeyi ölçüyor ama bu sefer Bluetooth'tan sinyal gelmiyor. Mesafe ölçme kodunu Bluetooth'tan gelen bir değer ile çalıştırmak isteyince de bu sefer Bluetooth'tan gelen sinyal kopuyor veya gelen sinyaller de 1 dakika civarında bir gecikme oluyor. Bu arada mesafe park sensörü kodunu şuanda kullanmıyorum sadece mesafe ölçüyorum aynı anda ikisini çalıştırabilmek için deniyorum. Kodum aşağıdaki gibidir. İnceleyip yardımcı olursanız sevinirim.

Tahminim muhtemelen Bluetooh ile Ultrasonik sensör aynı seri haberleşmeyi kullanmaması gerekli.Bunun için softSerial kütüphanesini kullanarak 2 farklı seri haberleşme başlatsam da yine çalışmadı.

KOD:
Kod:
//L298N Bağlantısı

const int motorA1  = 5;  // L298N'in IN3 Girişi

const int motorA2  = 6;  // L298N'in IN1 Girişi

const int motorB1  = 10; // L298N'in IN2 Girişi

const int motorB2  = 9;  // L298N'in IN4 Girişi

int state; //Bluetooth cihazından gelecek sinyalin değişkeni

int vSpeed = 255;   // Standart Hız, 0-255 arası bir değer alabilir



int trigPin = 3;

int echoPin = 4;

long sure;

long uzaklik;



void setup()

{

  pinMode(motorA1, OUTPUT);

  pinMode(motorA2, OUTPUT);

  pinMode(motorB1, OUTPUT);

  pinMode(motorB2, OUTPUT);

  pinMode(trigPin, OUTPUT); /* trig pini çıkış olarak ayarlandı */

  pinMode(echoPin, INPUT); /* echo pini giriş olarak ayarlandı */

  Serial.begin(9600);

}



void loop() {



  sensor(); 



  //Gelen veriyi 'state' değişkenine kaydet

  if (Serial.available() > 0)

  {

    state = Serial.read();   

  }     



  // Uygulamadan ayarlanabilen 4 hız seviyesi.(Değerler 0-255 arasında olmalı)

  if (state == '0') {

    vSpeed = 0;

  }

  else if (state == '1') {

    vSpeed = 100;

  }

  else if (state == '2') {

    vSpeed = 180;

  }

  else if (state == '3') {

    vSpeed = 200;

  }

  else if (state == '4') {

    vSpeed = 255;

  }

  /***********************İleri****************************/

  //Gelen veri 'F' ise araba ileri gider.

  if (state == 'B')

  {

    ileri();

    Serial.println("İleri");

  }

  /**********************İleri Sol************************/

  //Gelen veri 'G' ise araba ileri sol(çapraz) gider.

  else if (state == 'G')

  {

    ilerisolcapraz();

  }

  /**********************İleri Sağ************************/

  //Gelen veri 'I' ise araba ileri sağ(çapraz) gider.

  else if (state == 'I')

  {

    ilerisagcapraz();

  }

  /***********************Geri****************************/

  //Gelen veri 'B' ise araba geri gider.

  else if (state == 'F')

  {

    geri();

    Serial.println("Geri");

  }

  /**********************Geri Sol************************/

  //Gelen veri 'H' ise araba geri sol(çapraz) gider

  else if (state == 'H')

  {

    gerisol();

  }

  /**********************Geri Sağ************************/

  //Gelen veri 'J' ise araba geri sağ(çapraz) gider

  else if (state == 'J')

  {

    gerisag();

  }

  /***************************Sol*****************************/

  //Gelen veri 'L' ise araba sola gider.

  else if (state == 'L')

  {



    Serial.println(" SOL");

    sol();

  }

  /***************************Sağ*****************************/

  //Gelen veri 'R' ise araba sağa gider

  else if (state == 'R')

  {

    sag();

    Serial.println(" SAG");

  }

  /************************Stop*****************************/

  //Gelen veri 'S' ise arabayı durdur.

  else if (state == 'S')

  {

    dur();

  }

}



void sensor()

{

  digitalWrite(trigPin, LOW); /* sensör pasif hale getirildi */

  delayMicroseconds(5);

  digitalWrite(trigPin, HIGH); /* Sensore ses dalgasının üretmesi için emir verildi */

  delayMicroseconds(10);

  digitalWrite(trigPin, LOW);  /* Yeni dalgaların üretilmemesi için trig pini LOW konumuna getirildi */

  sure = pulseIn(echoPin, HIGH); /* ses dalgasının geri dönmesi için geçen sure ölçülüyor */

  uzaklik = sure / 29.1 / 2; /* ölçülen sure uzaklığa çevriliyor */

  Serial.print("Uzaklik ");

  Serial.print(uzaklik); /* hesaplanan uzaklık bilgisayara aktarılıyor */

  Serial.println(" CM olarak olculmustur.");

  delay(500);

}



//MOTORKOMUTLARI

void ileri()

{

  analogWrite(motorA1, vSpeed);

  analogWrite(motorA2, 0);

  analogWrite(motorB1, vSpeed);

  analogWrite(motorB2, 0);

}

void ilerisolcapraz()

{

  analogWrite(motorA1, vSpeed );

  analogWrite(motorA2, 0);

  analogWrite(motorB1, 100);

  analogWrite(motorB2, 0);

}

void ilerisagcapraz()

{

  analogWrite(motorA1, 100);

  analogWrite(motorA2, 0);

  analogWrite(motorB1, vSpeed);

  analogWrite(motorB2, 0);

}

void geri()

{

  analogWrite(motorA1, 0);

  analogWrite(motorA2, vSpeed);

  analogWrite(motorB1, 0);

  analogWrite(motorB2, vSpeed);

}

void gerisol()

{

  analogWrite(motorA1, 0);

  analogWrite(motorA2, 100);

  analogWrite(motorB1, 0);

  analogWrite(motorB2, vSpeed);

}

void gerisag()

{

  analogWrite(motorA1, 0);

  analogWrite(motorA2, vSpeed);

  analogWrite(motorB1, 0);

  analogWrite(motorB2, 100);

}

void sol()

{

  analogWrite(motorA1, vSpeed);

  analogWrite(motorA2, 150);

  analogWrite(motorB1, 0);

  analogWrite(motorB2, 0);

}

void sag()

{

  analogWrite(motorA1, 0);

  analogWrite(motorA2, 0);

  analogWrite(motorB1, vSpeed);

  analogWrite(motorB2, 150);

}

void dur()

{

  analogWrite(motorA1, 0);

  analogWrite(motorA2, 0);

  analogWrite(motorB1, 0);

  analogWrite(motorB2, 0);

}
 
Moderatör tarafında düzenlendi:
hc modülleriyle yapılan uygulamalarda bu tür sorunlar oluyor. Sensör kodları çalıştırılırken bluetooth kodlarını çalıştırmak üzere arduino beklemeye alıyor çalıştırmıyor. Her ikisini aynı anda çalıştıramazsınız. Kodlamanızda delay komutu da kullanarak delay süresince bluetooth kodlamasının çalışmasını engellemişsiniz. Bu haliyle istediğinizi yapamazsınız. Projenizi delay kullanmadan ve ultrasonik sensör yerine ir sensör kullanmanızı öneririm.
 
hc modülleriyle yapılan uygulamalarda bu tür sorunlar oluyor. Sensör kodları çalıştırılırken bluetooth kodlarını çalıştırmak üzere arduino beklemeye alıyor çalıştırmıyor. Her ikisini aynı anda çalıştıramazsınız. Kodlamanızda delay komutu da kullanarak delay süresince bluetooth kodlamasının çalışmasını engellemişsiniz. Bu haliyle istediğinizi yapamazsınız. Projenizi delay kullanmadan ve ultrasonik sensör yerine ir sensör kullanmanızı öneririm.
Teşekkürler. Peki switch koyup 1 de iken mesafe sensörleri ile otonom kullanım 2 konumunda Bluetooth ile uzaktan kontrollü şeklinde olabilir ki yani ayrı ayrı çalışacak hiç mesafe sensöru ile Bluetooth modülü detay izin yazılımında atabilirim benim yazılımımi. Teşekkürler.
hc modülleriyle yapılan uygulamalarda bu tür sorunlar oluyor. Sensör kodları çalıştırılırken bluetooth kodlarını çalıştırmak üzere arduino beklemeye alıyor çalıştırmıyor. Her ikisini aynı anda çalıştıramazsınız. Kodlamanızda delay komutu da kullanarak delay süresince bluetooth kodlamasının çalışmasını engellemişsiniz. Bu haliyle istediğinizi yapamazsınız. Projenizi delay kullanmadan ve ultrasonik sensör yerine ir sensör kullanmanızı öneririm.
Kod bu şekilde
 

Ekli dosyalar

  • kod.txt
    4.6 KB · Görüntüleme: 2
Son düzenleme:
ben daha önce hem ir ile kontrol edilen ,hem bloototh hc-05, hem çizgi izleyen, hem ışık takip eden yapmıştım aynı arduinonun üzerine sıkıntı yaşamamıştım kodunu bulursam atarım
 

Forum istatistikleri

Konular
127,950
Mesajlar
913,859
Kullanıcılar
449,598
Son üye
kadir12366

Yeni konular

Geri
Üst