çizgi izleyen robot

 Çizgi İzleyen Robot Nedir?

Çizgi izleyen robot, gideceği yolu otonom olarak takip eden robot tipidir. Takip edeceği yol, siyah düzlemin üstünde beyaz çizgi veya beyaz düzlemin üstünde siyah çizgi olacak şekilde hazırlanabilir. Robot bu takip etme işlemini sensörleri vasıtasıyla renk farkını algılayarak yapmaktadır.Yarışmalar için hazırlanmış bir çizgi izleyen robotun yol takibinin iyi olması dışında yolu kısa sürede tamamlayabilmesi için hızlı olması gerekir. Hızlı bir robotun anlık yol takibi yapabilmesi için dengesinin de iyi olması gerekir. Bu yüzden kullandığınız gövde, sensör ve motor seçimi de önemlidir.
Endüstriyel sektörde de çizgi izleyen robot mantığında robotlar bulunmakta fakat biz bu yazımızda hobi amaçlı çizgi izleyen robotları inceleyeceğiz.

Gerekli Malzemeler

  • Arduino Uno
  • Çok Amaçlı Robot Platformu 
  • L298N Voltaj Regulatörlü Çift Motor Sürücü Kartı
  • 4’lü Çizgi İzleyen Sensör Seti
  • Pil
  • 6’lı AA Pil Yuvası
  • Jumper

Çizgi İzleyen Robot Devresi


çizgi izleyen robot devresi





VE GELDİK MONTAJA
ilk önce youtube'den video izledim ve hiç birşey anlamadım bu sefer google dan araştırma yaptım ve şema  okumayı öğrendim ve oturdum masanın başına birleştirmek 4,5 saatimi aldı.bu günlük yetmişti artık yarın devam ederim dedim.yarın sabah kod aramaya başladım ama Türk sitelerinde bulamadım bu sefer yabancı sitelere bakmaya başladım  2 gün kod aramakla geçti.sonradan anladım ki şemaya göre kodlar varmış kodları şemaya bağlantılara göre atıyormuşuz yukarıda koyduğum şemanın aynısını robota geçirdim aynı sitede kodlar vardı kodları kopyala yapıştır yaptım Arduino atım ve pili taktım koydum siyah bandın üstüne ve çalışmadı şaşırdık'mı hayır.1,2 gün daha hatayı bulmaya çalıştım en sonunda buldum kodda sensörleri 10,11,12. pin'lere bağlanmış ben sensörleri 8,9,10 bağlamıştım ve koddan değiştirdim ve tekrar denedim ve çalıştı ama bir sıkıntı vardı bandı görmediği zaman duruyordu ben durmasını istemiyordum o yüzden kodlardan bunu durduran satırı aramaya başladım ve bulamadım sonra İnternet'ten robotik kodlama  nasıl yapılır matığını az buçuk çözdük'ten son sonra kodlara baktım zaten en alta adamlar belli etmiş dur kodu  diye bende  o kodu sildim ve yeniden yükledim istediğim oldu  şimdi koda bakalım:
robotun Arduino kodları
#define SensorSol 8
#define SensorOrta 9
#define SensorSag 10
#define MotorR1 2
#define MotorR2 1 // Sensör ve Motorların Arduino'ya bağladığımız pinlerini tanımlıyoruz.
#define MotorRE 3

#define MotorL1 5
#define MotorL2 4
#define MotorLE 6

void setup() {

  pinMode(SensorSol, INPUT);
  pinMode(SensorOrta, INPUT);
  pinMode(SensorSag, INPUT);

  pinMode(MotorR1, OUTPUT); // Sensör ve Motorların Giriş-Çıkış bilgilerini belirtiyoruz.
  pinMode(MotorR2, OUTPUT);
  pinMode(MotorL1, OUTPUT);
  pinMode(MotorL2, OUTPUT);
}
void loop() {
  if (digitalRead(SensorSol) == 0 && digitalRead(SensorOrta) == 1 && digitalRead(SensorSag) == 0) { // Orta sensör çizgiyi gördüğünde robot ileri gitsin.
    ileri();
  }
  if (digitalRead(SensorSol) == 0 && digitalRead(SensorOrta) == 0 && digitalRead(SensorSag) == 1) { // Sağ sensör çizgiyi gördüğünde robot sağa dönsün.
    sag();
  }
  if (digitalRead(SensorSol) == 1 && digitalRead(SensorOrta) == 0 && digitalRead(SensorSag) == 0) { // Sol sensör çizgiyi gördüğünde robot sola dönsün.
    sol();
  }
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, 200); // Sağ motorun hızı 150

  digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
  digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
  analogWrite(MotorLE, 200 ); // 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, 200); // Sol motorun hızı 150
}
void sol() { // Robotun sola 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, 200); // Sağ motorun hızı 150

  digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif
  digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif
  analogWrite(MotorLE, 0); // Sol motorun hızı 0 (Motor duruyor)
}
hepsi bu kadar pili taktım ve çalıştı









Yorumlar