ç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
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
Yorum Gönder