Arduino İle Sumo Robot Yapımı-4

Arduino Uno ile Sumo Robotun Programlanması

            Sumo robotun programlamasının sağlıklı yapılabilmesi için çalışma mantığının iyi kavranması gerekmektedir. Sumo robot üzerinde 5 adet sensör bulunmaktadır. Bu sensörler bize durum bilgisi vermektedir. Arduino Uno sensörlerden gelen bu durum bilgisine göre yapması gerekenleri belirlemektedir. Sumo robot yarışma sırasında çalışmaya başladığında ilk olarak kendi etrafında dönerek rakibi algılamaya çalışmaktadır. Rakibi algılama görevi ön kısma yerleştirilen iki adet bariyer sensörü ile yapılmaktadır.  Bariyer sensörleri sumo robotun ön kısmında sağa ve sola yerleştirilmiştir. Bunların sebebi ise rakibin ne tarafta olduğunu hızlı bir şekilde tespit edebilmektir. Sağ tarafta bulunan sensör rakibi algıladığında robot sağa yönelecek, sol tarafta bulunan sensör rakibi algıladığında ise sol tarafa yönelecektir. İki bariyer sensörü birlikte rakibi gördüğünde ise robot rakibin üzerine motor_ileri() fonksiyonu ile gidecektir.  Sumo robot bu fonksiyonları işletirken; örneğin rakibin üzerine ileri yönde giderken veya rakip robot tarafından pist dışına itilirken, bunu engelleyebilmek için robotun alt kısmına yerleştirilen çizgi sensörleri ile ön taraftan çıkmak üzereyken geri, arka tarafta bulunan çizgi sensörü pist çizgisini algıladığında ileri komutlarını çalıştıracaktır. Bu sayede pist dışına çıkmamaya çalışacaktır. Programın algoritması aşağıda verilmiştir.

Sumo robot algoritması:

algoritmas

 

Arduino ile Sumo robotun program kodları:

#define motor_1 2

#define motor_2 3

#define motor_3 4

#define motor_4 5

////////////////////////////////////////////////////////

#define cizgi_sensor_on_1 6

#define cizgi_sensor_on_2 7

#define cizgi_sensor_arka 8

#define engel_1 9

#define engel_2 10

/////////////////////////////////////////////////////////

void motor_ileri(){

digitalWrite(motor_1,LOW);

digitalWrite(motor_2,HIGH);

digitalWrite(motor_3,HIGH);

digitalWrite(motor_4,LOW);}

/////////////////////////////////////////////

void motor_geri(){

digitalWrite(motor_1,HIGH);

digitalWrite(motor_2,LOW);

digitalWrite(motor_3,LOW);

digitalWrite(motor_4,HIGH);}

/////////////////////////////////////////////

void motor_sag(){

digitalWrite(motor_1,HIGH);

digitalWrite(motor_2,LOW);

digitalWrite(motor_3,HIGH);

digitalWrite(motor_4,LOW);}

////////////////////////////////////////////

void motor_sol(){

digitalWrite(motor_1,LOW);

digitalWrite(motor_2,HIGH);

digitalWrite(motor_3,LOW);

digitalWrite(motor_4,HIGH);}

/////////////////////////////////////////////

void motor_dur(){

digitalWrite(motor_1,LOW);

digitalWrite(motor_2,LOW);

digitalWrite(motor_3,LOW);

digitalWrite(motor_4,LOW);}

///////////////////////////////////////////////

void setup(){

pinMode(motor_1,OUTPUT);

pinMode(motor_2,OUTPUT);

pinMode(motor_3,OUTPUT);

pinMode(motor_4,OUTPUT);

pinMode(cizgi_sensor_on_1,INPUT);

pinMode(cizgi_sensor_on_2,INPUT);

pinMode(cizgi_sensor_arka,INPUT);

pinMode(engel_1,INPUT);

pinMode(engel_2,INPUT);

delay(5000);                                  //start verildikten 5 sn sonra başlayacak

}

void loop() {

if(digitalRead(engel_1)== LOW && digitalRead(engel_2)== LOW){

if(digitalRead(cizgi_sensor_on_1) == LOW){motor_geri();delay(2000);}

if(digitalRead(cizgi_sensor_on_2) == LOW){motor_geri();delay(2000);}

motor_ileri();}

 

else if(digitalRead(engel_1)== LOW && digitalRead(engel_2)== HIGH)

{motor_sol();delay(50);}

else if(digitalRead(engel_1)== HIGH && digitalRead(engel_2)== LOW)

{motor_sag();delay(50);}

 

else if(digitalRead(cizgi_sensor_on_1) == LOW)

{motor_geri();}

else if(digitalRead(cizgi_sensor_on_2) == LOW)

{motor_geri();}

else if(digitalRead(cizgi_sensor_arka) == LOW)

{motor_ileri();delay(2000);}

else {motor_sag();}

delay(50);

}

 

Yukarıda verilen program kodları Arduino IDE programına yazılıp değişiklik yapmak istediğiniz noktalarda oynama yaparak doğrudan Arduino’ya yüklenebilir.

 

Mehmet Yalçın ASLAN

 

 

Arduino İle Sumo Robot Yapımı-1

Arduino İle Sumo Robot Yapımı-2

Arduino İle Sumo Robot Yapımı-3

Arduino İle Sumo Robot Yapımı-4

 

Arduino İle Çizgi İzleyen Robot

Arduino İle Sumo Robot Yapımı-4” için bir yorum

Bir Cevap Yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogcu bunu beğendi: