🤖
ROBOT KODLA
Öğrenmeye Başla →
🚀 Robotik Projeler ve Yapım Rehberleri 📅 16 Ekim 2026

Çizgi İzleyen Robot Nasıl Yapılır? Devre Şeması ve Kodları

Arduino ile çizgi izleyen robot nasıl yapılır? TCRT5000 çizgi sensörü, L298N motor sürücü, devre şeması, PID mantığı ve tam C++ kod rehberi.

Çizgi İzleyen Robot Nasıl Yapılır? Devre Şeması ve Kodları

Robot yarışmalarının (MEB Robot, TEKNOFEST, üniversite robot günleri) ve robotik kodlama eğitimlerinin tartışmasız en klasik ve en prestijli projesi "Çizgi İzleyen Robot"tur (Line Follower Robot). Beyaz zemin üzerindeki siyah bir çizgiyi (veya siyah zemin üzerindeki beyaz çizgiyi) optik sensörleriyle takip ederek otonom bir şekilde parkuru tamamlayan bu robotlar, günümüzde akıllı fabrikalarda ve Amazon lojistik depolarında yük taşıyan AGV (Automated Guided Vehicle) araçlarının temelini oluşturur.

Bu kapsamlı rehberde; kızılötesi çizgi sensörlerinin çalışma mantığını, 2 sensörlü temel algoritmadan PID kontrolüne kadar yazılım mimarisini, L298N motor sürücü bağlantılarını ve çalışan Arduino C++ kodlarını adım adım inceliyoruz.

1. Çizgi İzleyen Robotun Çalışma Prensibi: Işığın Yansıması ve Soğurulması

Çizgi izleyen robotların temel çalışma mantığı fiziğin en temel optik kuralına dayanır: Açık renkler (beyaz) ışığı geri yansıtırken, koyu renkler (siyah) ışığı emer (soğurur).

Bu tespiti yapmak için robotun alt tabanına, zemine yaklaşık 3 ila 10 mm mesafede duracak şekilde Kızılötesi (IR) Sensörler (örneğin TCRT5000 veya QTR-8A) yerleştirilir:

  • Kızılötesi Verici LED (IR LED): Zemine insan gözünün göremediği kızılötesi ışık dalgaları gönderir.
  • Fototransistör (Alıcı):
  • Zemin BEYAZ ise: Işık zeminden aynen yansır ve fototransistöre çarpar. Devre iletime geçer ve Arduino'ya lojik `0` (LOW / 0V) sinyali gider.
  • Zemin SİYAH ise: Siyah çizgi kızılötesi ışığı emer, geri hiçbir ışık yansımaz. Fototransistör yalıtkan kalır ve Arduino'ya lojik `1` (HIGH / 5V) sinyali gider.
  • Arduino bu iki sensörün durumunu saniyede yüzlerce kez okuyarak robotun çizgide olup olmadığını anlar.

    2. Diferansiyel Sürüş ve 2 Sensörlü Karar Tablosu

    Aracın önünde yan yana iki adet çizgi sensörü (Sol Sensör ve Sağ Sensör) bulunur. Robotun karar mekanizması şu basit mantık tablosuna göre çalışır:

    Sol SensörSağ SensörRobotun DurumuYapılacak EylemSol MotorSağ Motor
    0 (Beyaz)0 (Beyaz)Çizgi tam ortadaDüz İleri GitİLERİ (Hızlı)İLERİ (Hızlı)
    1 (Siyah)0 (Beyaz)Çizgi sola kaydıSola Düzeltme YapDUR / GERİİLERİ
    0 (Beyaz)1 (Siyah)Çizgi sağa kaydıSağa Düzeltme YapİLERİDUR / GERİ
    1 (Siyah)1 (Siyah)Parkur sonu / DurakDur veya Karar VerDURDUR

    3. Gerekli Malzemeler Listesi

    Malzeme AdıMiktarGörevi / Açıklama
    Arduino Uno veya Nano1 AdetRobotun beyni
    2WD Robot Araba Gövdesi (Şasi)1 AdetPleksi taban, sarhoş tekerlek ve montaj vidaları
    Sarı Redüktörlü DC Motor ve Tekerlek2 AdetÇekiş tekerlekleri
    L298N Çift Motor Sürücü Modülü1 AdetDC motorların hız ve yön kontrolü
    2 Kanallı TCRT5000 Çizgi Sensör Kartı1 AdetZemindeki siyah çizgiyi algılayan modül
    2 Adet 18650 Li-ion Pil ve Pil Yuvası1 Adet7.4V yüksek akımlı güç kaynağı
    Jumper Kablolar (Erkek-Dişi, Erkek-Erkek)15-20 AdetDevre elemanlarını bağlamak için
    Siyah Elektrik Bandı1 RuloBeyaz zemin üzerine test pisti çizmek için

    4. Devre Şeması ve Pin Bağlantı Rehberi

    A. L298N Motor Sürücü Bağlantıları:

  • OUT1 & OUT2: Sol DC Motor
  • OUT3 & OUT4: Sağ DC Motor
  • 12V Klemensi: 18650 Pillerin (+) kutbuna
  • GND Klemensi: 18650 Pillerin (-) kutbuna VE Arduino GND pinine (Ortak Topraklama!)
  • IN1: Arduino Dijital Pin 5
  • IN2: Arduino Dijital Pin 6
  • IN3: Arduino Dijital Pin 9
  • IN4: Arduino Dijital Pin 10
  • B. TCRT5000 Çizgi Sensörü Bağlantıları:

  • VCC: Arduino 5V
  • GND: Arduino GND
  • OUT1 (Sol Sensör): Arduino Dijital Pin 2
  • OUT2 (Sağ Sensör): Arduino Dijital Pin 3
  • 5. Tam ve Çalışan Arduino C++ Kodları

    Aşağıdaki kod, 2 sensörlü klasik çizgi izleyen robot için en kararlı ve test edilmiş yazılımdır:

    /* * RobotKodla.com - Otonom Robotik Projeleri * Proje: 2 Sensörlü Çizgi İzleyen Robot * Yazar: Kadir Hoca */ // Sensör Pinleri
    const int solSensorPin = 2;
    const int sagSensorPin = 3; // Motor Sürücü Pinleri (L298N)
    const int solMotorIleri = 5;
    const int solMotorGeri = 6;
    const int sagMotorIleri = 9;
    const int sagMotorGeri = 10; void setup() { // Sensörler giriş olarak yapılandırılır pinMode(solSensorPin, INPUT); pinMode(sagSensorPin, INPUT); // Motor pinleri çıkış olarak yapılandırılır pinMode(solMotorIleri, OUTPUT); pinMode(solMotorGeri, OUTPUT); pinMode(sagMotorIleri, OUTPUT); pinMode(sagMotorGeri, OUTPUT);
    } void loop() { // Sensör durumlarını oku (1 = Siyah, 0 = Beyaz) int solSensor = digitalRead(solSensorPin); int sagSensor = digitalRead(sagSensorPin); // Durum 1: İki sensör de beyazda (Çizgi tam ortada) -> DÜZ GİT if (solSensor == 0 && sagSensor == 0) { ileriGit(); } // Durum 2: Sol sensör siyah gördü -> SOLA DÖN else if (solSensor == 1 && sagSensor == 0) { solaDon(); } // Durum 3: Sağ sensör siyah gördü -> SAĞA DÖN else if (solSensor == 0 && sagSensor == 1) { sagaDon(); } // Durum 4: İki sensör de siyah gördü (Bitiş çizgisi) -> DUR else if (solSensor == 1 && sagSensor == 1) { dur(); }
    } void ileriGit() { digitalWrite(solMotorIleri, HIGH); digitalWrite(solMotorGeri, LOW); digitalWrite(sagMotorIleri, HIGH); digitalWrite(sagMotorGeri, LOW);
    } void solaDon() { // Sol motor geri, sağ motor ileri dönerse robot olduğu yerde hızla sola döner digitalWrite(solMotorIleri, LOW); digitalWrite(solMotorGeri, HIGH); digitalWrite(sagMotorIleri, HIGH); digitalWrite(sagMotorGeri, LOW);
    } void sagaDon() { // Sol motor ileri, sağ motor geri dönerse robot hızla sağa döner digitalWrite(solMotorIleri, HIGH); digitalWrite(solMotorGeri, LOW); digitalWrite(sagMotorIleri, LOW); digitalWrite(sagMotorGeri, HIGH);
    } void dur() { digitalWrite(solMotorIleri, LOW); digitalWrite(solMotorGeri, LOW); digitalWrite(sagMotorIleri, LOW); digitalWrite(sagMotorGeri, LOW);
    }

    6. Sensör Kalibrasyonu (Hayati Aşama)

    TCRT5000 sensör kartının üzerinde iki adet mavi küçük potansiyometre (trimpot) bulunur:

  • Robotu test pistinin beyaz zeminine koyun. Kart üzerindeki gösterge LED'i sönük olmalıdır. Eğer yanıyorsa vidayı LED sönene kadar çevirin.
  • Sensörü siyah çizginin üzerine getirin. Gösterge LED'i anında parlak bir şekilde yanmalıdır.
  • Bu hassas kalibrasyon, ortamın oda ışığına göre sensörün siyah ile beyazı hatasız ayırt etmesini sağlar.
  • 7. İleri Düzey: PID Kontrolü Nedir?

    2 sensörlü temel robotlar çizgiyi "zikzaklar çizerek (sallanarak)" takip eder. Çünkü sistem sadece "tam sola dön" veya "tam sağa dön" diyebilir.

    Profesyonel yarışma robotlarında 5 veya 8 sensörlü dizilimler (QTR-8A) ve PID (Proportional - Integral - Derivative) Algoritması kullanılır:

  • P (Orantısal): Çizgiden ne kadar saptığını hesaplar (hata payı). Az saptıysa az döner, çok saptıysa sert döner.
  • D (Türevsel): Hatanın değişim hızına bakar; robotun viraja sert girdiğinde savrulmasını engeller.
  • I (İntegral): Sürekli biriken küçük açı kaymalarını dengeler.
  • PID kontrolü sayesinde robot virajları tren rayında kayar gibi pürüzsüz ve inanılmaz yüksek hızlarda tamamlar.

    8. Sık Karşılaşılan Sorunlar ve Çözümleri

    SorunOlası NedenPratik Çözüm
    Robot çizgiye gelince zıt yöne dönüyorSol ve sağ motor kabloları ters takılmışKodda `solaDon` ve `sagaDon` fonksiyonlarındaki pinleri veya motor kablolarını yer değiştirin.
    Robot siyah çizgiyi hiç görmüyor, düz geçip gidiyorSensör zemine çok uzakSensör yüksekliğini zeminden 4-6 mm seviyesine indirin.
    Robot virajlarda çizgiden çıkıyorHız çok yüksek veya pil voltajı düşüyorL298N ENA/ENB pinlerine PWM vererek motor hızını %70 seviyesine düşürün.

    9. Kapsamlı Sıkça Sorulan Sorular (SSS)

    Çizgi genişliği kaç santimetre olmalıdır?

    Standart yarışma kurallarına göre siyah çizgi genişliği 18 mm ile 20 mm (standart bir elektrik bandı genişliği) olmalıdır. İki sensörünüzün arasındaki mesafe de tam bu çizginin iki kenarına denk gelecek şekilde ayarlanmalıdır.

    Zemin mat mı yoksa parlak mı olmalıdır?

    Parlak beyaz zeminler kızılötesi ışığı ayna gibi saçarak sensörü yanıltabilir. İdeal test pisti mat beyaz dekota veya mat beyaz branda üzerine çekilmiş mat siyah folyodur.

    4WD (4 tekerlekli) araba ile çizgi izleyen yapılır mı?

    Yapılabilir ancak 4 tekerlekli araçların dönüş sürtünmesi çok yüksektir; virajlarda zorlanırlar. Çizgi izleyen robotlarda en çevik ve ideal tasarım arkada 2 çekiş tekerleği, önde ise 1 adet sarhoş tekerlek (2WD) konfigürasyonudur.

    Sonuç

    Çizgi izleyen robot projesi, sensör fiziği ile diferansiyel motor dinamiğinin kusursuz birleşimidir. Bu projeyi başarıyla yürüten bir öğrenci; otonom sürüş mantığını, sensör kalibrasyonunu ve kapalı çevrim kontrol sistemlerini derinlemesine öğrenmiş olur. Daha gelişmiş robotik tasarımlar için sitemizin [Projeler](/projeler) bölümünü incelemeye devam edin!

    💡

    Çizgi İzleyen Robot Nasıl Yapılır? Devre Şeması ve Kodları Hakkında Sıkça Sorulan Sorular

    Bu yazıyla ilgili en çok merak edilen noktalar ve uzman yanıtları

    Bu rehber yazıda anlatılan yöntemleri uygulamak için neler gereklidir?▼
    İçerikte belirtilen açık kaynaklı yazılım araçlarını ve temel donanım bileşenlerini temin etmeniz yeterlidir. Tüm adımlar pratik uygulamalarla desteklenmiştir.
    Bu uygulamada devre bağlantısı yaparken en çok yapılan hata nedir?▼
    Ortak toprak (GND) hattının bağlanmaması, LED ve sensör bacaklarının ters kutupla takılması ya da pin numaralarının koddaki dijital/analog tanımlarla uyuşmaması en sık karşılaşılan durumlardır. Şemadaki pin numaralarını iki kez kontrol etmek sorunu çözer.
    Çizgi İzleyen Robot Nasıl Yapılır? Devre Şeması ve Kodları çalışmasını tamamladıktan sonra nasıl daha ileri bir seviyeye taşıyabilirim?▼
    Bu çalışmaya ek sensörler (kablosuz Bluetooth/Wi-Fi modülü, OLED ekran veya sesli buzzer uyarısı) entegre edebilir; verileri internet ortamına aktararak Nesnelerin İnterneti (IoT) tabanlı akıllı bir sisteme dönüştürebilirsiniz.