Arduino Sensörlü Araç Yapımı

Arduino Sensörlü Araç Yapımı

Arduino ile sensörlü engelden kaçan araba Arduino başlangıç için güzel bir projedir.

Bu arabanın karşısına engel çıkarsa sensör tarafından algılanan engel Arduino kodları ile nesnelere çarpmadan gitmesini sağlayabiliriz.

Bunun için aşağıdaki malzemelere ihtiyaç vardır. 

  • 1 adet 2WD (2 tekerlekli) Robot Araç Kiti
  • 1 adet L298N Motor Sürücü Kartı
  • 1 adet Arduino Uno SMD Klon
  • Arduino Kartı ile Bilgisayar arasında bağlantı için USB Kablo
  • 1 adet HC-SR04 Ultrasonik Mesafe Sensörü
  • Jumper Kabloları

Araç bağlantı devresi

Araç Devresi

Engelden kaçan sensörlü araç Arduino kodu:

#define echoPin 13 // Ultrasonik sensörün echo pini Arduino'nun 13. pin tanımı
#define trigPin 12  // Ultrasonik sensörün trig pini Arduino'nun 12. pin tanımı
#define MotorR1 6 // Sağ Motor pini tanımlıyoruz.
#define MotorR2 7 // Sağ Motor pini tanımlıyoruz.
#define MotorRE 9 // Sağ Motor hız pini tanımlıyoruz.
#define MotorL1 5 // Sol Motor pini tanımlıyoruz.
#define MotorL2 4 // Sol Motor pini tanımlıyoruz.
#define MotorLE 3 // Sol Motor hız pini tanımlıyoruz.

long sure, uzaklik; //süre ve uzaklık değişkenleri tanımlıyoruz.

void setup() {
   pinMode(echoPin, INPUT); // bu dalgaları Echo pini ile geri aldığı için INPUT (Giriş) olarak tanımlanır.
   pinMode(trigPin, OUTPUT);// ultrasonik sensör Trig pininden ses dalgaları gönderdiği için OUTPUT (Çıkış),

   pinMode(MotorL1, OUTPUT); //Motorlarımızı çıkış olarak tanımlıyoruz.
   pinMode(MotorL2, OUTPUT);
   pinMode(MotorLE, OUTPUT);
   pinMode(MotorR1, OUTPUT);
   pinMode(MotorR2, OUTPUT);
   pinMode(MotorRE, OUTPUT);

   Serial.begin(9600);
}

void loop() {

   digitalWrite(trigPin, LOW); //sensör pasif hale getirildi
   delayMicroseconds(5);
   digitalWrite(trigPin, HIGH); //Sensore ses dalgasının için komut
   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 süre uzaklığa çevriliyor

   Serial.println(uzaklik);

   if (uzaklik < 15) // Uzaklık 15 cmden küçük ise,
   {
      geri(); // 150 milisaniye geri git
      delay(150);
      sag(); // 250 milisaniye sağa dön
     delay(250);
   }
   else {
      ileri(); // değilse ileri git
   }
}

void ileri(){ // Robotun ileri yönde hareketi için fonksiyon tanımlıyoruz.
   digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
   digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
   analogWrite(MotorRE, 150); // Sağ motorun hızı 150

   digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
   digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
   analogWrite(MotorLE, 150); // Sol motorun hızı 150
}

void sag(){ // Robotun sağa dönme hareketi için fonksiyon tanımlıyoruz.
   digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif
   digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif
   analogWrite(MotorRE, 0); // Sağ motorun hızı 0 (Motor duruyor)

   digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
   digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
   analogWrite(MotorLE, 150); // Sol motorun hızı 150
}

void geri(){ // Robotun geri yönde hareketi için fonksiyon tanımlıyoruz.
   digitalWrite(MotorR1, LOW); // Sağ motorun ileri hareketi pasif
   digitalWrite(MotorR2, HIGH); // Sağ motorun geri hareketi aktif
   analogWrite(MotorRE, 150); // Sağ motorun hızı 150

   digitalWrite(MotorL1, LOW); // Sol motorun ileri hareketi pasif
   digitalWrite(MotorL2, HIGH); // Sol motorun geri hareketi aktif
   analogWrite(MotorLE, 150); // Sol motorun hızı 150
}

Sensörlü Araç Videosu

 


İlgili Yazılar