Eğitim Şart

Taşı delen suyun şiddeti değil sürekliliğidir!…

Arduino ile Çizgi İzleyen Robot

Biz de bir çizgi izleyen robot yapalım dedik…

En basit yolla ve kodla bu işi halletmeye çalıştım. Bir yoğurt kapağını platform olarak kullandım.

resim

Diğer malzemeler:

  • Arduino uno,
  • Bir motor sürücü,
  • İki adet motor ve tekerlekleri,
  • iki adet IR sensör,
  • kablolar, plastik ve yapıştırıcı.

ir sensormotor sürücüarduino

Kodu oldukça basit tutmaya çalıştım. Sensörlerin aracın kontrolünü sağlayabilmesi için aracın hızını düşürmek gerekti. Dolayısıyla milisaniye seviyelerdeki zamanlamalarla aracı periyodik olarak durdurup tekrar hareket ettirmek gerekti. Bir de Sensörlerin ayarlamasını yapmak oldukça önemliydi. Kullanılan motorlar fazla akım çektiği için çift pi kullandım, motorların ve arduinonun ayrı ayrı pille çalışmasını sağladım. Board kullanmadığım için +5 volt ihtiyacı için iki pin daha HIGH yapılarak, sensörlerin beslemesi olarak kullanıldı.

Umarım faydalanırsınız.

Kullanılan kod:

#define LS 2 // Sol sensor
#define RS 3 // Sağ sensor
#define LM1 5 // Sol motor ileri
#define LM2 4 // Sol motor geri
#define RM1 7 // Sağ motor ileri
#define RM2 6 // Sağ motor geri
void setup()
{
Serial.begin(9600); // programın çalıştığını test etmek için
Serial.println(“basladii”); // seri haberleşme başlatıldı
pinMode(LS, INPUT); // giriş-çıkış pinleri tanıtıldı
pinMode(RS, INPUT);
pinMode(LM1, OUTPUT);
pinMode(LM2, OUTPUT);
pinMode(RM1, OUTPUT);
pinMode(RM2, OUTPUT);
pinMode(8, OUTPUT);pinMode(9, OUTPUT); // board kullanmadığımdan fazladan +5 volt ihtiyacı için 8 ve 9 nolu pinler kullanıldı
digitalWrite(8, HIGH);digitalWrite(9, HIGH);
}
void loop()
{
if(!digitalRead(LS) && !digitalRead(RS)) // DÜZ İLERİ! İKİ SENSÖR DE BOŞTA
{
Serial.println(“duzgittt”);
digitalWrite(LM1, HIGH); // KONTROL SAĞLANABİLMESİ İÇİN
digitalWrite(LM2, LOW); //araç 50 ms ilerletilip
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
delay(50);
digitalWrite(LM1, LOW); // ARAÇ 90 ms DURDURULUYOR
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
delay(100);
}
if(!digitalRead(LS) && (digitalRead(RS))) // SOLA DÖN!SAĞ SENSÖR ÇİZGİDE
{
Serial.println(“soool”);
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, HIGH);
digitalWrite(RM2, LOW);
delay(50);
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
delay(100);
}
if((digitalRead(LS)) && !digitalRead(RS)) // SAĞA DÖN! SOL SENSÖR ÇİZGİDE
{
Serial.println(“saaaaaagg”);
digitalWrite(LM1, HIGH);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
delay(50);
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
delay(100);
}

if((digitalRead(LS)) && (digitalRead(RS))) // İKİ MOTOR DA DURUYOR
{
Serial.println(“duuur”);
digitalWrite(LM1, LOW);
digitalWrite(LM2, LOW);
digitalWrite(RM1, LOW);
digitalWrite(RM2, LOW);
}
}

Koddaki seri haberleşme satırları sadece kodun çalışıp çalışmadığını kontrol etmek içindir. Bu satırlar( serialbegin, serialprintln ile başlayan satırlar) silinebilir.

%d blogcu bunu beğendi: