Çarpmayan Araba (Arduino)

Sıcaklık ve Nem Ölçen Kalemlik (Arduino)
Arazi Robotu v1.1 (Arduino)

Size faydalı olduysa, sosyal medyada paylaşarak bize destek olun. Teşekkürler.

Proje Fotoğrafı:

Açıklama:

Arduino’ya 3 adet HC-SR04 Ultrasonik Mesafe Sensörü taktık.  Sensörler her engel algıladıklarında aracı sağa döndürüyorlar.

Malzemeler:

  • (3 adet) HC-SR04 Ultrasonik Mesafe Sensörü
  • (3 adet) HC-SR04 Ultrasonik Mesafe Sensörü Bağlatı Aparatı
  • (1 adet) Arduino Uno
  • (1 adet) 2WD Robot Car kiti
  • (3 adet) 18650 pil
  • (1 adet) L298N Motor Sürücü Kartı

!!!Proje video’su yakında eklenecektir.

Bağlantı Şeması:

Projenin Diğer Fotoğrafları:

Proje Kodu:

//HC-SR04 Ultrasonik Mesafe Sensörlerinin pinleri
int trigPin1 = A4;
int echoPin1 = A5;
long sure1;
long uzaklik1;

int trigPin2 = 10;
int echoPin2 = 11;
long sure2;
long uzaklik2;

int trigPin3 = 12;
int echoPin3 = 13;
long sure3;
long uzaklik3;

//Motor Sürücünün Pinleri
const int ena=3;
const int in1=4;
const int in2=5;
const int in3=6;
const int in4=7;
const int enb=9; 

int motorHizi=225;

void setup(){
  pinMode(trigPin1, OUTPUT); //trig pini çıkış olarak ayarlandı
  pinMode(echoPin1,INPUT);   //echo pini giriş olarak ayarlandı
  
  pinMode(trigPin2, OUTPUT); //trig pini çıkış olarak ayarlandı 
  pinMode(echoPin2,INPUT);   //echo pini giriş olarak ayarlandı 
  
  pinMode(trigPin3, OUTPUT); //trig pini çıkış olarak ayarlandı 
  pinMode(echoPin3,INPUT);   //echo pini giriş olarak ayarlandı
  
  Serial.begin(9600); //Seri haberlesme baslatildi
  
  pinMode(ena,OUTPUT);
  pinMode(in1,OUTPUT);
  pinMode(in2,OUTPUT);
  
  pinMode(in3,OUTPUT);
  pinMode(in4,OUTPUT);
  pinMode(enb,OUTPUT);
  
  delay(500);
}

void ileri(){  //Robotun ileri yönde hareketi için fonksiyon tanımlıyoruz.
  motorHizi=100; //son deger 255
  analogWrite(ena,motorHizi); 
  analogWrite(enb,motorHizi);
  digitalWrite(in1,LOW);
  digitalWrite(in2,HIGH);
  digitalWrite(in3,HIGH);
  digitalWrite(in4,LOW);
}

void sag(){ //Robotun sağa dönme hareketi için fonksiyon tanımlıyoruz.
  motorHizi=100; //son deger 255
  analogWrite(ena,motorHizi); 
  analogWrite(enb,motorHizi);
  digitalWrite(in1,HIGH);
  digitalWrite(in2,LOW);
  digitalWrite(in3,HIGH);
  digitalWrite(in4,LOW);
}

void dur(){ //Robotun durma hareketi için fonksiyon tanımlıyoruz.
  analogWrite(ena,0);
  analogWrite(enb,0);
  digitalWrite(in1,HIGH);
  digitalWrite(in2,LOW);
  digitalWrite(in3,HIGH);
  digitalWrite(in4,LOW);
}

void loop()
{
  //1. Sensör
  digitalWrite(trigPin1, LOW);      //Sensör pasif hale getirildi
  delayMicroseconds(5);
  digitalWrite(trigPin1, HIGH);    //Sensore ses dalgasının üretmesi için emir verildi
  delayMicroseconds(10);
  digitalWrite(trigPin1, LOW);     //Yeni dalgaların üretilmemesi için trig pini LOW konumuna getirildi 
  sure1 = pulseIn(echoPin1, HIGH); //Ses dalgasının geri dönmesi için geçen sure ölçülüyor
  uzaklik1= sure1 /29.1/2;         //Ölçülen sure uzaklığa çevriliyor        
  if(uzaklik1 > 200)
  {
    uzaklik1 = 200;
  }
  Serial.print("Uzaklik1 ");  
  Serial.print(uzaklik1);          //Hesaplanan uzaklık bilgisayara aktarılıyor 
  Serial.println(" CM olarak olculmustur.");  

  //2. Sensör
  digitalWrite(trigPin2, LOW);
  delayMicroseconds(5);
  digitalWrite(trigPin2, HIGH); 
  delayMicroseconds(10);
  digitalWrite(trigPin2, LOW);
  sure2 = pulseIn(echoPin2, HIGH);
  uzaklik2= sure2 /29.1/2;     
  if(uzaklik2 > 200)
  {
    uzaklik2 = 200;
  }
  Serial.print("Uzaklik2 ");
  Serial.print(uzaklik2);
  Serial.println(" CM olarak olculmustur.");

  //3. Sensör
  digitalWrite(trigPin3, LOW);
  delayMicroseconds(5);
  digitalWrite(trigPin3, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin3, LOW);
  sure3 = pulseIn(echoPin3, HIGH);
  uzaklik3= sure3 /29.1/2;
  if(uzaklik3 > 200)
  {
    uzaklik3 = 200;
  }
  Serial.print("Uzaklik3 ");  
  Serial.print(uzaklik3);
  Serial.println(" CM olarak olculmustur.");  

  if (uzaklik1<41||uzaklik2<41||uzaklik3<41) //herhangi bir sensör 41 cm'den yakında engel algılarsa araç sağa dönüyor
  {   
    dur();
    delay(500);
    sag();
    delay(500);
    dur();
    delay(500);
    Serial.println("Sağa dönüyorum");  
  }
  else //engel yoksa araç ileri gidiyor
  {
    ileri();
    Serial.println("İleri gidiyorum");  
  }
}

 

Size faydalı olduysa, sosyal medyada paylaşarak bize destek olun. Teşekkürler.

Sıcaklık ve Nem Ölçen Kalemlik (Arduino)
Arazi Robotu v1.1 (Arduino)