Arduino Projeleri
#12Gelişmiş

Çizgi İzleyen Robot

~2-3 saatAnalog eşik/PID mantığına aşinalık faydalı

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 PiniBağ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

arduino-12-cizgi-izleyen-robot.ino
1const int solIR=2, sagIR=3;
2const int IN1=5, IN2=6, IN3=7, IN4=8;
3
4void setup(){
5 pinMode(solIR,INPUT); pinMode(sagIR,INPUT);
6 pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT);
7 pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT);
8}
9
10void ileri(){ digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW); }
11void sagaDon(){ digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);digitalWrite(IN3,LOW);digitalWrite(IN4,LOW); }
12void solaDon(){ digitalWrite(IN1,LOW);digitalWrite(IN2,LOW);digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW); }
13void dur(){ digitalWrite(IN1,LOW);digitalWrite(IN2,LOW);digitalWrite(IN3,LOW);digitalWrite(IN4,LOW); }
14
15void 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.

Bu projenin kodunu AI ile özelleştir

Farklı pin, ek özellik ya da başka bir sensör mü istiyorsun?