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)); } } |