Çizgi İzleyen Robot
Proje Amacı
Zemin üzerindeki siyah bir çizgiyi 2 IR sensörle takip ederek otonom hareket eden bir robot yapar; iki sensörün ürettiği 4 olası HIGH/LOW kombinasyonu robotun tüm yön kararlarını belirler.
Gerekli Malzemeler
- Arduino Uno
- 2x IR Çizgi Takip Sensörü
- L298N Motor Sürücü
- 2x DC Motor + Tekerlek
- Kaide/Şasi
- Pil Paketi
Gerekli Kütüphaneler
Gerekli ek kütüphane yok, sadece Arduino IDE'nin yerleşik fonksiyonları kullanılıyor.
Pin Bağlantıları
| Bileşen Pini | Bağlantı |
|---|---|
| Sol IR Sensör OUT | D2 |
| Sağ IR Sensör OUT | D3 |
| L298N IN1 | D5 |
| L298N IN2 | D6 |
| L298N IN3 | D7 |
| L298N IN4 | D8 |
Devre Şeması
Arduino Kodu
| 1 | const int solIR=2, sagIR=3; |
| 2 | const int IN1=5, IN2=6, IN3=7, IN4=8; |
| 3 | |
| 4 | void setup(){ |
| 5 | pinMode(solIR,INPUT); pinMode(sagIR,INPUT); |
| 6 | pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); |
| 7 | pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT); |
| 8 | } |
| 9 | |
| 10 | void ileri(){ digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW); } |
| 11 | void sagaDon(){ digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);digitalWrite(IN3,LOW);digitalWrite(IN4,LOW); } |
| 12 | void solaDon(){ digitalWrite(IN1,LOW);digitalWrite(IN2,LOW);digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW); } |
| 13 | void dur(){ digitalWrite(IN1,LOW);digitalWrite(IN2,LOW);digitalWrite(IN3,LOW);digitalWrite(IN4,LOW); } |
| 14 | |
| 15 | void loop(){ |
| 16 | bool sol=digitalRead(solIR), sag=digitalRead(sagIR); |
| 17 | if(!sol && !sag) ileri(); |
| 18 | else if(sol && !sag) solaDon(); |
| 19 | else if(!sol && sag) sagaDon(); |
| 20 | else dur(); |
| 21 | } |
Çalışma Açıklaması
IR sensörlerin zeminden yüksekliği (genelde 0.5-1 cm) performansı doğrudan etkiler. Sensörlerin HIGH/LOW mantığı modülden modüle ters olabilir (siyah/beyaz algılama), kodda gerekirse tersini deneyin.
Test Bilgisi
Robotu siyah bantla çizilmiş beyaz bir zemine yerleştirin. Robotun çizgiyi takip ederek ilerlediğini, çizgiden saptığında düzeltme yaptığını gözlemleyin.
Olası Sorunlar ve Çözümleri
Robot çizgiyi hiç takip etmiyorsa: IR sensörlerin siyah/beyaz algılama mantığının (HIGH=siyah mı beyaz mı) modülünüzde ters olabileceğini kontrol edip kod içinde tersini deneyin. Robot sık sık çizgiden çıkıyorsa: sensörlerin zeminden yüksekliğini (ideal 0.5-1cm) ayarlayın. Dönüşler çok sert/yumuşaksa: motor hızlarını PWM ile (analogWrite) kademeli kontrol ederek yumuşatın.
Alternatif Çözümler
2 IR sensör yerine 5 sensörlü bir dizi kullanılarak çok daha hassas ve yumuşak çizgi takibi (PID kontrol ile) yapılabilir. Kamera tabanlı bir sistem (ESP32-CAM) ile daha karmaşık rota tanıma yapılabilir. Çizgi yerine manyetik şerit takibi için Hall effect sensörler kullanılabilir.
Benzer Projeler
Bluetooth Kontrollü Araba
Telefondaki bir Bluetooth uygulamasından gelen tek karakterlik komutlarla (F/B/L/R/S) 2 tekerlekli bir robotu yönlendirir — HC-05'in 3.3V mantık seviyesi burada gerçek bir tuzak barındırır (bkz. Çalışma Açıklaması).
Engelden Kaçan Robot
Önündeki engelleri ultrasonik sensörle algılayıp geri çekilip yön değiştiren bir robot yapar — kod bilinçli olarak basit tutuldu, servo ile taramalı algılama bir sonraki geliştirme adımı olarak notlarda bırakıldı.
LED Küp (4x4x4 3D Işık Küpü)
64 LED'i 4x4x4 küp şeklinde dizip katman katman kontrol ederek 3 boyutlu ışık animasyonları oluşturur — gerçek 64 LED'lik versiyon Arduino Uno'nun pin sayısını aşar (bkz. Çalışma Açıklaması), bu da projeyi shift register öğrenmek için iyi bir bahaneye çevirir.