Arduino – Engelden Kaçan Robot (Video+Kod)

# include <servo .h >
//Servo dosyaları dahil ediliyor

Servo leftservo;     //Sol servo
Servo rightservo;    //Sağ servo
Servo scanservo;     //Sensörün bağlı olduğu servo
//Pin ve diğer ayarlar
const int turntime = 500;  //Number of milliseconds to turn when turning
const int pingPin = 7;     //Sensörün ping pini
const int leftservopin = 9; //sol servo pin
const int rightservopin = 10; // sağ servo pin
const int scanservopin = 6;   // sensör servo pin
const int distancelimit = 10;   //Mesafe limiti (inç)

//Yüklemeler
void setup()
{
//Servo yüklemeleri
  leftservo.attach(leftservopin); 
  rightservo.attach(rightservopin); 
  scanservo.attach(scanservopin);
  delay(2000);        // wait two seconds
}

//Ana program başlangıç
void loop(){
  go();  //go() fonksiyonuna git

  int distance = ping(); 
// ping() fonksiyonunda ölçülen değeri distance değişkenine ata

 

if (distance < distancelimit){

stopmotors();

char turndirection = scan();

//scan() fonksiyonundan ölçülen değere göre hareket et

switch (turndirection){

case ‘l’:

turnleft(turntime);

break;

case ‘r’:

turnright(turntime);

break;

case ‘s’:

turnleft(turnaroundtime);

break;

}

}

}

//Ana program bitiş

//Mesaja ölçme fonksiyonu başlangıç

int ping(){

long duration, inches, cm;

//Ölçüm Ayarlamaları

pinMode(pingPin, OUTPUT);

digitalWrite(pingPin, LOW);

delayMicroseconds(2);

digitalWrite(pingPin, HIGH);

delayMicroseconds(5);

digitalWrite(pingPin, LOW);

//Ölçülen değerin değişkene atılması

pinMode(pingPin, INPUT);

duration = pulseIn(pingPin, HIGH);

// değer dönüşümleri

inches = microsecondsToInches(duration);

cm = microsecondsToCentimeters(duration);

//ekrana yazdırma

Serial.print(“Ping:  ”);

Serial.println(inches);

return round(inches);

}

//Mesafe ölçüm fonksiyonu bitiş

 

//go() fonksiyonu

void go(){

leftservo.write(30);

rightservo.write(150);

}

 

//sola dönüş

void turnleft(int t){

leftservo.write(150);

rightservo.write(150);

delay(t);

}

 

//sağa dönüş

void turnright(int t){

leftservo.write(30);

rightservo.write(30);

delay(t);

}

 

//düz gitme

void forward(int t){

leftservo.write(30);

rightservo.write(150);

delay(t);

}

 

//geriye dönme

void backward(int t){

leftservo.write(150);

rightservo.write(30);

delay(t);

}

 

//motorları durdurma

void stopmotors(){

leftservo.write(90);

rightservo.write(90);

}

//scan() fonksiyonu başlangıç

char scan(){

int leftscanval, centerscanval, rightscanval;

char choice;

//Solu tara

scanservo.write(30);

delay(300);

leftscanval = ping();

//Sağı tara

scanservo.write(150);

delay(1000);

rightscanval = ping();

//Önü tara

scanservo.write(88);

//Boş alanı bul

if (leftscanval>rightscanval && leftscanval>centerscanval){

choice = ‘l’;

}

else if (rightscanval>leftscanval && rightscanval>centerscanval){

choice = ‘r’;

}

else{

choice = ‘s’;

}

 

Serial.print(“Choice:  ”);

Serial.println(choice);

return choice;

}

//scan() fonksiyonu bitiş

 

long microsecondsToInches(long microseconds){

return microseconds / 74 / 2;

}

 

long microsecondsToCentimeters(long microseconds){

return microseconds / 29 / 2;

}

Robotun devresi olarak Arduino UNO, Sensör olarak Paralax PING Ultrasonic Mesafe Sensörü kullanılmıştır.

Not: Robotun tekerleklerine bağlı olan servolar modifiye edildikleri için 360 derece dönebilmektedir.

“Arduino – Engelden Kaçan Robot (Video+Kod)” üzerine 8 düşünce

  1. Değerli hocam,
    Bize bu robot hakkında teknik bilgi lazım elinizde bu robotun yapımıyla ilgili döküman, video, kod vb. bilgi varsa paylaşırmısınız?
    mail adresim:
    hakanozmn@gmail.com

  2. Merhaba,bu robot için kullanılan malzemeleri ve nereden temin edebileceğimizi detaylı yazabilir misiniz ?

        1. dc motor kullanmak için öncelikle motor sürücü kullanmanız lazım. Eğer motor sürücü olarak Arduino Motor Shield kullanıcaksanız detaylı bilgiye ulaşabilirsiniz. Servo komutlarını silip bu linkteki yazıda geçen motor sürme komutlarını kullanmanız gerekir

  3. Sensör olarak Paralax PING Ultrasonic Mesafe Sensörü kullanmasam 4 pinli ultrasonic mesafe sensörü kullansam bi sıkıntı olur mu .

    1. Ana algoritma aynı kalır sadece sensör değerinin okunduğu kısımların yeni sensöre göre düzenlenmesi gerekir

Bir Cevap Yazın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>