Işık Takip Eden Robot Yapımı ve Çalışma Mantığı
Doğadaki pek çok canlı (örneğin ayçiçekleri veya güveler), yaşamlarını sürdürebilmek için ışık kaynağına doğru yönelirler. Biyolojide **"Fototropizma" (Işığa Yönelim)** olarak adlandırılan bu doğa harikası refleks, robotik dünyasında **Işık Takip Eden Robot (Light Follower Robot)** olarak modellenir. Bu robotlar, karanlık bir odada elinize aldığınız bir fenerin ışığını takip ederek peşinizden gelir; tıpkı uysal bir evcil hayvan gibi ışık nereye giderse oraya yönelir.
Bu kapsamlı rehberde; LDR (Foto Direnç) sensörlerinin analog çalışma prensibini, ışığın açısını tespit eden differansiyel bölücü mantığını, devre şemasını ve çalışan Arduino kodlarını adım adım inceliyoruz.
---
1. Sistemin Çalışma Mantığı: Işık Farkını Algılama
Robotun ön yüzüne, aralarında ışık geçirmeyen dikey küçük bir siperlik (örneğin siyah bir karton parça) bulunan **iki adet LDR sensörü (Sol LDR ve Sağ LDR)** yerleştirilir:
---
2. Gerekli Malzemeler Listesi
| Malzeme | Adet | Açıklama |
|---|---|---|
| **Arduino Uno veya Nano** | 1 | Kontrol kartı |
| **2WD Robot Şasisi ve 2 DC Motor** | 1 | Hareket mekanizması |
| **L298N Motor Sürücü Modülü** | 1 | Motorları yöneten sürücü |
| **2 Adet LDR (Foto Direnç)** | 2 | Işık şiddetini algılayan sensörler |
| **2 Adet 10kΩ Direnç** | 2 | Gerilim bölücü devresi kurmak için |
| **2x 18650 Li-ion Pil ve Yuvası** | 1 | 7.4V motor beslemesi |
| **Breadboard ve Jumper Kablolar** | 1 | Devre kurulumu için |
---
3. LDR Gerilim Bölücü Devre Şeması
LDR tek başına bir dirençtir; voltaj üretmez. Arduino'nun analog pininin voltaj okuyabilmesi için her LDR'ye seri olarak bir **10kΩ direnç** bağlanarak gerilim bölücü (voltage divider) oluşturulur:
---
4. Tam ve Çalışan Arduino C++ Kodları
/*
* RobotKodla.com - Biyomimetik Robotik
* Proje: Işık Takip Eden Robot
*/
const int solLdrPin = A0;
const int sagLdrPin = A1;
const int solIleri = 5;
const int solGeri = 6;
const int sagIleri = 9;
const int sagGeri = 10;
// Hassasiyet eşik değeri (İki sensör arasındaki tolere edilen fark)
const int tolerans = 50;
const int karanlikSiniri = 200; // Ortam çok karanlıksa dur
void setup() {
pinMode(solIleri, OUTPUT);
pinMode(solGeri, OUTPUT);
pinMode(sagIleri, OUTPUT);
pinMode(sagGeri, OUTPUT);
Serial.begin(9600);
}
void loop() {
int solIsik = analogRead(solLdrPin);
int sagIsik = analogRead(sagLdrPin);
// Ortam tamamen karanlıksa dur
if (solIsik < karanlikSiniri && sagIsik < karanlikSiniri) {
dur();
return;
}
int fark = solIsik - sagIsik;
if (abs(fark) <= tolerans) {
// Işık iki sensörde de neredeyse eşit -> İLERİ GİT
ileri();
} else if (solIsik > sagIsik) {
// Sol taraf daha parlak -> SOLA DÖN
solaDon();
} else {
// Sağ taraf daha parlak -> SAĞA DÖN
sagaDon();
}
delay(50);
}
void ileri() {
digitalWrite(solIleri, HIGH);
digitalWrite(solGeri, LOW);
digitalWrite(sagIleri, HIGH);
digitalWrite(sagGeri, LOW);
}
void solaDon() {
digitalWrite(solIleri, LOW);
digitalWrite(solGeri, HIGH);
digitalWrite(sagIleri, HIGH);
digitalWrite(sagGeri, LOW);
}
void sagaDon() {
digitalWrite(solIleri, HIGH);
digitalWrite(solGeri, LOW);
digitalWrite(sagIleri, LOW);
digitalWrite(sagGeri, HIGH);
}
void dur() {
digitalWrite(solIleri, LOW);
digitalWrite(solGeri, LOW);
digitalWrite(sagIleri, LOW);
digitalWrite(sagGeri, LOW);
}
---
5. Optik Siperlik İpucu: Neden Siperlik Şarttır?
Eğer iki LDR'yi robotun üstüne yan yana açıkta koyarsanız, oda ışığı her iki sensörü de aynı anda aydınlatır ve robot fenerin nereden geldiğini ayırt edemez.
---
6. Kapsamlı Sıkça Sorulan Sorular (SSS)
Bu robotu tersine çevirip "Işıktan Kaçan Robot" yapabilir miyiz?
Evet! Kodda sadece yön fonksiyonlarını tersine çevirerek (`solIsik > sagIsik` olduğunda sağa dön komutu vererek) robotu hamamböcekleri gibi ışıktan kaçıp karanlık köşelere saklanan bir robota dönüştürebilirsiniz.
Güneş takip eden güneş panelleriyle aynı mantıkta mıdır?
Birebir aynı mantıktır! Güneş takip eden panellerde (Solar Tracker) robot araba yerine paneli döndüren 2 adet servo motor kullanılır ve sistem güneş ışığının en dik geldiği açıyı bu diferansiyel LDR algoritmasıyla bulur.
---
---
7. Biyomimetik Robotik: Ayçiçeklerinden Uzay Araçlarına
Işık takip mekanizması (Fototropizma), sadece bir oyuncak robot projesi değil, çağımızın en kritik uzay ve enerji teknolojilerinin ilham kaynağıdır:
1. **Güneş Enerjisi Santralleri (Solar Tracking):** Düz sabit güneş panelleri gün boyu güneşi dik açıyla alamaz. Bu diferansiyel ışık takip sistemiyle donatılmış 2 eksenli güneş takip kuleleri, güneşin gökyüzündeki rotasını milimetrik izleyerek %35 ila %45 arasında daha fazla elektrik enerjisi üretir.
2. **Mars Keşif Araçları (Rovers):** Mars yüzeyindeki fırtınalarda tozlanan güneş panellerini güneşe doğru çevirerek hayatta kalma enerjisi toplamak için benzer fotodiyot algoritmaları kullanılır.
3. **Kendi Kendini Şarj Eden Ev Robotları:** Robot süpürgelerin veya bahçe robotlarının pilleri bittiğinde odadaki şarj istasyonunun yaydığı ışık veya kızılötesi işaretçiyi takip ederek yuvalarına yanaşması bu temel mantıkla kodlanır.
---
8. LDR Sensörlü Robotlarda Kalibrasyon ve Ortam Dengesi
---
---
10. Işık Takip Eden Robotu Güneş Enerjisiyle Çalıştırma ve Ekoloji
Robotun şasisi üzerine küçük bir **5V Güneş Paneli** yerleştirerek hibrit bir enerji sistemi kurabilirsiniz:
---
Sonuç
Işık takip eden robot, doğadaki biyolojik reflekslerin robotik kodlama ile nasıl taklit edilebileceğini gösteren harika bir eğitim projesidir. Diğer sensörlü otonom projeler için sitemizin [Projeler](/projeler) bölümünü ziyaret edin!