Arduino ile Basit Çizgi İzleyen Robot Yapımı

çizgi izleyen robot yapımı

Bir önceki projemizdekine benzer bir robot tasarlayalım. Fakat bu sefer uzaklık sensörlerini sökelim ve robotun en önüne yere bakacak ve yerden 1-2 CM yukarıda olacak şekilde, siyah/beyaz sensörlerimizi koyalım. Bu robotumuzda 3 tane CNY70 kullanacağız. Bu yüzden daha önce anlattığımız şekilde bu sensörlerden 3 tane bağlayalım.


Öncelikle söylemeliyim ki robot yarışmalarında gördüğümüz kadar kaliteli bir çizgi izleyen yapmayacağız. O tarz bir robot yapmak için PID kullanmamız gerekir. Fakat biz buna gerek kalmadan daha basit bir robot yapacağız.


Haydi Başlayalım… Öncelikle malzeme listemizi çıkartalım:

  • 1 adet şase: Tüm malzemeleri ve motorları sabitlemek için bir plaka
  • 2 adet DC motor
  • 2 adet tekerlek: DC motorun ucuna tam uymalı
  • 1 adet motor sürücü: Kendi yaptığımız da olur
  • 1 adet sarhoş tekerlek: Veya yüzeyle sürtünmeyi azaltacak bir çubuk ( ben genellikle LED’in kafasını kullanmaktayım)
  • Pil : 11.1 Voltluk lipo piller uygun olacaktır. 9 Voltluk pil motorlar için yetersiz kaldığı oluyor Denemek lazım
  • 3 adet CNY70 : Bağlantıları bir kartın üzerine yaparak kullanabilirsiniz
  • Ve tabii ki bir Arduino
    Programlamaya başlayalım. Önceki konularda öğrendiğimiz kodlar üzerinden projemizi yazacağız.
const int sagileri = 9;
const int saggeri = 8;
const int solileri = 12;
const int solgeri = 13;
const int solenable = 11;
const int sagenable = 10;
int sensorpin[3] = {A0,A1,A2};   // Sensörlerimizin bağlantıları
int dijitalize(int deger,int sensor){
int esikdegeri;
switch(sensor){
// Eşik değerlerini kendi sensörünüze göre ayarlamayı unutmayın
// Eşik değerleri için “Arduino ile Siyah Beyaz Kontrolü” konusuna bakabilirsiniz
case 0:
esikdegeri = 900;
break;
case 1:
esikdegeri = 820;
break;
case 2:
esikdegeri = 820;
break;
}
if (esikdegeri <deger)
return 1;
else
return 0;
}
void ileri(int hizsag, int hizsol){
analogWrite(sagenable, hizsag);
digitalWrite(sagileri,HIGH);
digitalWrite(saggeri,LOW);
analogWrite(solenable, hizsol);
digitalWrite(solileri, HIGH);
digitalWrite(solgeri,LOW);
}
void setup(){
pinMode(sagileri,OUTPUT);
pinMode(saggeri,OUTPUT);
pinMode(solileri,OUTPUT);
pinMode(solgeri,OUTPUT);
pinMode(sagenable,OUTPUT);
pinMode(solenable,OUTPUT);
}
void loop(){
if(dijitalize(analogRead(sensorpin[1]),1)){
ileri(100,100);
}
if(dijitalize(analogRead(sensorpin[0]),0)){
ileri(0,100);
while(!dijitalize(analogRead(sensorpin[0]),0));
}
if(dijitalize(analogRead(sensorpin[2]),2)){
ileri(100,0);
while(!dijitalize(analogRead(sensorpin[2]),2));
}
}

İlgili Mesajlar

Abone ol
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments