📅 20 Nisan 2026, Pazartesi
📚 Ders Kitapları ✉ İletişim
@ydiner.gen.tr İlköğretim & Lise Düzeyi Kaynak Site "Bilgi paylaştıkça çoğalır"
🏠 Ana Sayfa
  • 🧊 3D Tasarım
  • Animasyon
  • ⚡ Arduino
  • 📌 Genel
  • 🎨 Grafik
  • Pardus
  • 💻 Programlama
  • Robotik ve Kodlama
  • 🗄️ SQL
  • 🌐 Web Tasarım
  • 🤖 Yapay Zeka
  • Robotik ve Kodlama

    Engelden Kaçan Robot

    22 Nisan 2025 aydiner
    
    #define echoPin 12 //Ultrasonik sensörün echo pini Arduino'nun 12.pinine
    #define trigPin 13 //Ultrasonik sensörün trig pini Arduino'nun 13.pinine tanımlandı.
    #define MotorR1 7
    #define MotorR2 6
    #define MotorRE 9 // Motor pinlerini tanımlıyoruz.
    #define MotorL1 5
    #define MotorL2 4
    #define MotorLE 3
    long sure, uzaklik; //süre ve uzaklık diye iki değişken tanımlıyoruz.
    void setup() {
    // ultrasonik sensör Trig pininden ses dalgaları gönderdiği için OUTPUT (Çıkış),
    // bu dalgaları Echo pini ile geri aldığı için INPUT (Giriş) olarak tanımlanır.
    pinMode(echoPin, INPUT);
    pinMode(trigPin, OUTPUT);
    pinMode(MotorL1, OUTPUT);
    pinMode(MotorL2, OUTPUT);
    pinMode(MotorLE, OUTPUT); //Motorlarımızı çıkış olarak tanımlıyoruz.
    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 ü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,30000); //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'den küçük ise,
    {
    geri(); // 150 ms geri git
    delay(150);
    sag(); // 250 ms sağa dön
    delay(250);
    }
    else { // değil ise,
    ileri(); // 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, 100); // Sağ motorun hızı 150
    digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
    digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
    analogWrite(MotorLE, 100); // 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, 100); // 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, 100); // Sağ motorun hızı 150
    digitalWrite(MotorL1, LOW); // Sol motorun ileri hareketi pasif
    digitalWrite(MotorL2, HIGH); // Sol motorun geri hareketi aktif
    analogWrite(MotorLE, 100); // Sol motorun hızı 150
    }
    
    
    
    
    
    
    
    

    Pin Tanımlamaları:
    Echo ve Trig Pinleri: Ultrasonik sensörün, mesafe ölçümünü yapabilmesi için Echo pini giriş olarak, Trig pini çıkış olarak tanımlanmış.

    Motor Pinleri: 4 motor pininin her biri belirli yönlere göre tanımlanmış. Ayrıca motorların hızlarını ayarlamak için enable pinleri de tanımlanmış.

    setup() Fonksiyonu:
    Pinlerin çıkış (OUTPUT) ya da giriş (INPUT) olarak ayarlandığı fonksiyon.

    Trig pini çıkış olarak ayarlandı çünkü bu pin ses dalgası gönderiyor, Echo pini ise geri dönen ses dalgasını almak için giriş olarak ayarlanmış.

    loop() Fonksiyonu:
    Ultrasonik sensör okuması:

    digitalWrite(trig, LOW) ve delayMicroseconds(5) ile sensör pasif hale getiriliyor.

    Sonra digitalWrite(trig, HIGH) ile ses dalgası gönderiliyor ve hemen ardından digitalWrite(trig, LOW) ile yeni dalga gönderilmemesi sağlanıyor.

    pulseIn(echo, HIGH) komutu, ses dalgasının geri dönüş süresini ölçer ve bu süreyi mesafeye dönüştürmek için kullanılır.

    Mesafe, sure / 29.1 / 2 formülü ile hesaplanır.

    Mesafe Değerlendirmesi:

    Eğer mesafe 30 cm’den küçükse, motorlar belli bir şekilde hareket eder. Engelin etrafından dolaşmak için motorlar belli aralıklarla yön değiştirir. Önce iki motor da ileri hareket eder, sonra bir motor geri gider ve diğer motor ileri gider.

    Eğer mesafe 30 cm’den büyükse, motorlar ileri doğru hareket eder (engelsiz yolda düz gitmek için).