Çizgi izleyen eğitsel robotun tasarımıyla ilgili tüm işlemleri daha önceki makalelerde anlatmıştık. Biz burada gerekli olan kodları yazmakla yetineceğiz.
int trig = 7; // Mesafe sensörü trig pini için D7 portunu belirle
int echo = 8; // Mesafe sensörü echo pini için D8 portunu belirle
int h=100; // Motor dönüş hızını belirle
void setup(){
pinMode(5, OUTPUT);// sağ motor ileri pini
pinMode(6, OUTPUT);// sağ motor geri pini
pinMode(9, OUTPUT);// sol motor ileri pini
pinMode(10, OUTPUT);// sol motor geri pini
pinMode(2, INPUT); // Sağ Cizgi sensor
pinMode(3, INPUT); // Orta Cizgi sensor
pinMode(4, INPUT);// Sol Cizgi sensor
pinMode(trig, OUTPUT);
pinMode(echo , INPUT);
}
void loop(){
digitalWrite(trig , 1);
delay(1);
digitalWrite(trig , 0);
int sure = pulseIn(echo , 1);
int mesafe = (sure/2) / 28.97;
delay(1);
int sR = digitalRead(2);
int sC = digitalRead(3);
int sL = digitalRead(4);
if (mesafe < 30 ) // mesafe 30 cm’den küçük ise robotu durdur.
{
dur();
}
else // mesafe 30 cm’den büyük ise çizgiyi takip et.
{
if ((sL==1) && (sC==0) && (sR==1)) ileri();
if ((sL==0) && (sC==1) && (sR==1)) sol();
if ((sL==1) && (sC==1) && (sR==0)) sag();
}
}
void dur(){
analogWrite(5, 0);
analogWrite(6, 0);
analogWrite(9, 0);
analogWrite(10, 0);
}
void ileri() {
analogWrite(5, h);
analogWrite(6, 0);
analogWrite(9, h);
analogWrite(10, 0);
}
void sol() {
analogWrite(5, h);
analogWrite(6, 0);
analogWrite(9, 0);
analogWrite(10, 0);
}
void sag() {
analogWrite(5, 0);
analogWrite(6, 0);
analogWrite(9, h);
analogWrite(10, 0);
}
|