Labirent Çözen Robot

Konu, 'Proje ve Fikir Atolyesi' kısmında savas tarafından paylaşıldı.

  1. savas

    savas MB Üyesi

    Kayıt:
    15 Mart 2015
    Mesajlar:
    3
    Beğeniler:
    0
    En İyi Cevap:
    0
    Değerlendiriler:
    +0 / 0 / -0
    Arkadaşlar merhaba, benim bir sorum var sizelere. Engel algayıp onlardan kaçarak yoluna devam eden robotlar labirentlerde kullanilabilir mi yada onun disinda ne gibi alanlarda kullanilabilir? Benim labirent cozen robot yapmam gerekiyor çok hakim değilim robotiğe ve çok araştırdım engele karşı duyarlı robot projeleriyle ilgili yararlanabilcegim döküman buldum ama amacima uyarmı eger gercekleştirebilirsem? Neler tavsiye edersiniz?
     
  2. Kemal Okur

    Kemal Okur Yetkili Kişi Yönetici

    Kayıt:
    7 Şubat 2015
    Mesajlar:
    338
    Beğeniler:
    198
    Meslek:
    Mekatronik Mühendisi
    En İyi Cevap:
    10
    Değerlendiriler:
    +248 / 3 / -2
    Üniversite:
    Fırat Üniversitesi
    Arduino ile labirent çözen robot yapımına giriş yapacağız.

    Arkadaşlar küçük bir not düşmek istiyorum, buradaki yapmış olduğumuz projeyi doğrudan robot yarışmaları için kullanmayın. Üstüne kendinizde bir şeyler ekleyin ardından isterseniz robot yarışmalarında kullanın. Burdan direkt alıp kullanmak size bir şeyler öğretmez, ezberletir. Kendim için değil, sizin için istiyorum bunu icon_smile.gif
    Malzeme listemize geçmeden önce bu projede Motor Sürücü Entegresi yerine Röle kullanacağım. Siz Motor Sürücü Entegresi kullanabilirsiniz.
    Malzemeler:
    1. Arduino Uno
    2. 9V Pil
    3. Breadboard
    4. Bolca erkek-erkek,dişi-erkek,dişi-dişi Jumper kablo
    5. 2 Adet 6V DC Motor (3V,5V,9V,12V vs. DC Motorda kullanabilirsiniz.)
    6. 6V DC Harici güç kaynağı (Motora göre seçiniz) (4 Adet 1.5V AA pil ve uygun pil yuvası kullanacağım)
    7. 5 Adet 5V DC Röle
    8. 4 Adet Ultrasonik Sensör (Mesafe Sensörü)
    9. Uygun robot kiti (Tekerler, kasa vb.) (Uygun bir uzaktan kumandalı arabada alıp kullanabilirsiniz)
    Devre Şeması
    labirentCozenRobot.jpg


    Kodlama

    Kod:
    intt1=2;//ileri geri için motor pini 1
    intt2=3;//ileri geri için motor pini 2
    intt3=4;//dönüşler için motor pini 1
    intt4=5;//dönüşler iççin motor pini 1
    inttrigPin=13;// ön ultrasonik sensör
    intechoPin=12;//ön ultrasonik sensör
    inttrigPinSol=11;// sol ultrasonik sensör
    intechoPinSol=10;// sol ultrasonik sensör
    inttrigPinSag=9;// sağ ultrasonik sensör
    intechoPinSag=8;// sağ ultrasonik sensör
    longmicrosaniyeSure,cmMesafe;// Mesafe hesabında kullanılan değişkenler
    intc=0;
    voidsetup(){
    /*
    * Pinlerimizin giriş çıkışlarını ayarlıyoruz
    */
    pinMode(t1,OUTPUT);
    pinMode(t2,OUTPUT);
    pinMode(t3,OUTPUT);
    pinMode(t4,OUTPUT);
    pinMode(trigPin,OUTPUT);
    pinMode(echoPin,INPUT);
    pinMode(trigPinSol,OUTPUT);
    pinMode(echoPinSol,INPUT);
    pinMode(trigPinSag,OUTPUT);
    pinMode(echoPinSag,INPUT);
    }
    voidloop(){
    if(mesafeOlc(echoPin,trigPin)<=40){
    if(mesafeOlc(echoPinSag,trigPinSag)>=40){
    sifir();
    sagaDon();
    }elseif(mesafeOlc(echoPinSol,trigPinSol)>=40){
    sifir();
    solaDon();
    }else{
    sifir();
      geri();
    }
    }else{
    ileri();
    }
    }
    voidsagaDon(){
    sifir();
    sag();
    ileri();
    delay(500);
    sifir();
    delay(200);
    sol();
    geri();
    delay(500);
    sifir();
    }
    voidsolaDon(){
    sifir();
    sol();
    ileri();
    delay(500);
    sifir();
    delay(200);
    sag();
    geri();
    delay(500);
    sifir();
    }
    longmesafeOlc(intecho,inttrig){
    digitalWrite(trig,LOW);// Hoparlör 2ms sessiz
    delayMicroseconds(2);
    digitalWrite(trig,HIGH);// Hoparlör 10ms sesli
    delayMicroseconds(10);
    digitalWrite(trig,LOW);// Hoparlör sessiz
    microsaniyeSure=pulseIn(echo,HIGH);// Mikrofonu dinle, yansıma süresini microsaniyeSure değişkenine al
    cmMesafe=microsaniyeSure/58.3;// microsaniyeSure'dan cm olarak mesafeyi hesapla
    returncmMesafe;
    }
    voidsifir(){
    digitalWrite(t1,LOW);
    digitalWrite(t2,LOW);
    digitalWrite(t3,LOW);
    digitalWrite(t4,LOW);
    }
    voidsol(){
    digitalWrite(t4,LOW);
    digitalWrite(t3,HIGH);
    }
    voidsag(){
    digitalWrite(t3,LOW);
    digitalWrite(t4,HIGH);
    }
    voidgeri(){
    digitalWrite(t1,LOW);
    digitalWrite(t2,HIGH);
    }
    voidileri(){
    digitalWrite(t2,LOW);
    digitalWrite(t1,HIGH);
    }
    
    alttangorunus.jpg distangorunus.jpg
    ondengorunus.jpg usttengorunus.jpg

    Alıntı: myazarc
     
    • Beğen Beğen x 6
  3. savas

    savas MB Üyesi

    Kayıt:
    15 Mart 2015
    Mesajlar:
    3
    Beğeniler:
    0
    En İyi Cevap:
    0
    Değerlendiriler:
    +0 / 0 / -0
    Çok sağolun ilginiz için çok yararlı bir kaynak olacak benim için :)
     
  4. savas

    savas MB Üyesi

    Kayıt:
    15 Mart 2015
    Mesajlar:
    3
    Beğeniler:
    0
    En İyi Cevap:
    0
    Değerlendiriler:
    +0 / 0 / -0
    Kafama takılan birşey daha oldu burada tekerlekler sabit yani sadece ileri ve geri gitmiyormu? Dönme olayı nasıl gerçekleşiyor bu durumda bunuda anlarsam tam olacak.
     
  5. Kemal Okur

    Kemal Okur Yetkili Kişi Yönetici

    Kayıt:
    7 Şubat 2015
    Mesajlar:
    338
    Beğeniler:
    198
    Meslek:
    Mekatronik Mühendisi
    En İyi Cevap:
    10
    Değerlendiriler:
    +248 / 3 / -2
    Üniversite:
    Fırat Üniversitesi
    Sağa dönmek istendiğinde sağ lastik sabit kalır sol lastik çalışır bu durumda sağa dönme işlemi gerçekleşmiş olur aynı durum sola dönüş içinde geçerlidir.
     
    • Beğen Beğen x 2
  6. emrahozmen

    emrahozmen MB Üyesi

    Kayıt:
    20 Mart 2015
    Mesajlar:
    22
    Beğeniler:
    8
    En İyi Cevap:
    1
    Değerlendiriler:
    +8 / 0 / -0
    Üniversite:
    erciyes
    merhaba,

    burada engel tanıyan robotları kullanabilirsiniz. donanım olarak aynı yapıda olacaklar zaten. yazılımda eklenti yapmanız gerekir. labirentte bu yol çıkmaz sokak demeniz gerekir. yani çıkmayan yolları robotun bilmesi gerek yoksa sonsuz döngüde kalabilir. çıkmayan yolları bula bula sonunda çözüme ulaşacaktır.
    yapı olarak her yol ayrımında yazılımda işaret koymak gerekir. gidilen yol eğer çıkmaz ise bir önceki yol ayrımına kadar olan yere işaret koymak gerekir. yani çıkmaz yol ise 0 deneme yapılıyor ise 1 denebilir. bu şekilde robot çıkmaz sokakları bilir ve tekrar aynı yolu denemez.
    yazılım-donanım ile ilgili sorularınız varsa cevaplamaya çalışabilirim.
     
    • Beğen Beğen x 1
  7. myazarc

    myazarc MB Üyesi

    Kayıt:
    3 Mayıs 2015
    Mesajlar:
    2
    Beğeniler:
    0
    En İyi Cevap:
    0
    Değerlendiriler:
    +0 / 0 / -0
    Üniversite:
    selçuk üni. tbmyo
    Merhaba;

    Sağa sola burda dönüş işlemini uzaktan kumandalı araba kullandığım için, hazır bir yapı vardı. Tam sağ ve tam sol yapmıyor. Bunu uygun açı ile dönme süresini hazırlamak gerekiyor.
    En mantıklı sistem @Kemal Okur arkadaşımızın belirttiği şekilde de olabilir, biraz daha hızlı dönüş istiyorsan, sağ öne sol arkaya dönerse sola; sol öne sağ arkaya dönerse sağa döner.

    Yolları hatırlamak için bir EEPROM dahil ederek verileri kaydedebilirsiniz.
     
  8. CBlood6134

    CBlood6134 MB Üyesi

    Kayıt:
    13 Mayıs 2015
    Mesajlar:
    1
    Beğeniler:
    0
    En İyi Cevap:
    0
    Değerlendiriler:
    +0 / 0 / -0
    Üniversite:
    KTU
    S.aleykum bende bu projeyi yapıyorum fakat kafama takılan bişey var yazılmış olan programda 3 adet sensör gösteriliyor ama baglantı şemasında 4 adet var bu nasıl oluyor?Diğer sorum hangi sensör hangi yöne ait? Belirtirseniz sevinirim.Kolay gelsin...
     
  9. myazarc

    myazarc MB Üyesi

    Kayıt:
    3 Mayıs 2015
    Mesajlar:
    2
    Beğeniler:
    0
    En İyi Cevap:
    0
    Değerlendiriler:
    +0 / 0 / -0
    Üniversite:
    selçuk üni. tbmyo
    A.s. 4.cü yani arkayı kontrol edecek olanı geri gitmek amaçlı düşünüp daha sonradan gereksiz olduğu için kaldırdım. birini sistemden çıkarabilirsiniz.
     
  10. Deduska

    Deduska MB Üyesi

    Kayıt:
    29 Temmuz 2016
    Mesajlar:
    190
    Beğeniler:
    125
    Meslek:
    Developer
    En İyi Cevap:
    9
    Değerlendiriler:
    +153 / 1 / -0
    • Beğen Beğen x 2
  11. Alcides

    Alcides MB Üyesi

    Kayıt:
    30 Nisan 2017
    Mesajlar:
    3
    Beğeniler:
    0
    En İyi Cevap:
    0
    Değerlendiriler:
    +0 / 0 / -0
    Üniversite:
    Bilecik Şeyh Edebali Üni.
    Hocam kolay gelsin.
    Kodlamada röle ile ilgili herhangi bir şey yok.Röleye gerek var mı?