Bilgisayar-Bilişim Teknolojileri
Ana Sayfa
Bilişim Teknolojileri Forumu Son Konuları
24 Saat
Bilişim Teknolojileri - Formatör - Bilgisayar Öğretmeni Kayıt
Kayıt Olun
iletişim
iletişim
Detaylı Arama
Arama
Yeni Konu Aç
Yeni Konu Aç

arduino çizgi izleyen robot, engel algılayan robot?

Konu, 'Elektrik ve Elektronik' kısmında bidene tarafından paylaşıldı.


  1. bidene

    bidene Süper Üye Süper Üye

    Kayıt:
    21 Temmuz 2014
    Mesajlar:
    2.478
    Beğeni:
    90
    merhabalar.
    nette pek çok kaynak var ancak çalışan devre ve kodlar bulamadım.
    yapıyorum ya çizgi izlemiyor ya engel algılamıyor.
    elimde hemen her türlü malzeme var.
    elinde çalışır devre kodlar olan arkadaşlar varsa bende kendileriyle projelerimi paylaşabilirim.
     
  2. aydınDr

    aydınDr Süper Üye Süper Üye

    Kayıt:
    14 Temmuz 2014
    Mesajlar:
    1.556
    Beğeni:
    1
    Sayin hocam
    Sizin yapmış olduğunuz ve çalışır durumdaki program proje paylasimlarinizdan sonra bu konuda calisma yapanlar içinde paylasim yapmalari husunda teşvik edici olacağını düşünüyorum
    Saygılar

    aydinDr
     
  3. bidene

    bidene Süper Üye Süper Üye

    Kayıt:
    21 Temmuz 2014
    Mesajlar:
    2.478
    Beğeni:
    90
    hocam
    devamı arkadaşlardan bir şeyler gelir diye paylaşıyorum.
    mesafeyi algılayıp lcd ye yazan program kodlarımdır.
    proje bu haliyle oyuncak arabaların üzerine monte edilip park sensörü olarak sergilenebilir.
     

    Ekli Dosyalar:

  4. bidene

    bidene Süper Üye Süper Üye

    Kayıt:
    21 Temmuz 2014
    Mesajlar:
    2.478
    Beğeni:
    90
    aydın hocam sizden de beklerim paylaşım.
     
  5. cumhurtorun

    cumhurtorun Seçkin Üye Seçkin Üye

    Kayıt:
    15 Ocak 2008
    Mesajlar:
    962
    Beğeni:
    9
    hocam önümüzdeki ay antepte olan robot yarışmasına katılacağız. şu an çizgi izleyen robotun kodları hazır. 3 tane engel algılayan sensör eklemem gerekiyor. şu an onlar üzerinde çalışıyorum. bitince devre şeması, kod eklerim.
     
  6. bidene

    bidene Süper Üye Süper Üye

    Kayıt:
    21 Temmuz 2014
    Mesajlar:
    2.478
    Beğeni:
    90
    ne kadar sürer hocam.
    önümüzdeki ay 4006 var malum :)
     
  7. Kilit

    Kilit Seçkin Üye Seçkin Üye

    Kayıt:
    22 Kasım 2013
    Mesajlar:
    531
    Beğeni:
    22
  8. bidene

    bidene Süper Üye Süper Üye

    Kayıt:
    21 Temmuz 2014
    Mesajlar:
    2.478
    Beğeni:
    90
    Hocam yaptim aaglikli calusmadi.
    ustelik ben entegre ile degil motor surucu devresi ile kullannak istiyorum
    surucu devre olmadan entegre cok isiniyor
     
  9. cumhurtorun

    cumhurtorun Seçkin Üye Seçkin Üye

    Kayıt:
    15 Ocak 2008
    Mesajlar:
    962
    Beğeni:
    9
    hocam mayıs 10-11-12 antepteyiz. arduino uno üzerinde ardumoto shield var. çizgi sensörü olarak 8 tane QTR kullandım. cisim sensörü olarak mz80 kullanacağım. siparişlerini verdim bekliyorum.
     
  10. cumhurtorun

    cumhurtorun Seçkin Üye Seçkin Üye

    Kayıt:
    15 Ocak 2008
    Mesajlar:
    962
    Beğeni:
    9
    motor olarak 1000 ve 2500 rpm'lik iki çift motorum var. cisim sensörlerimde sıkıntı çıkmazsa 2500rpmleri kullanacağım. sıkıntı olursa 1000'likleri kullanıp, 2500 rpm'likler ile hızlı çizgi izleyen için hızlıca bir robot yapacağım.
     
  11. buzdagi83

    buzdagi83 Seçkin Üye Seçkin Üye

    Kayıt:
    27 Eylül 2007
    Mesajlar:
    364
    Beğeni:
    544
    Hocam 7. sınıflara arduino ile engel algılayan robot yaptırdım. Bir adet hc-sr04 sensör kullandırdım. Bu sensörü servo motor üzerine monte ettik ve bu sayede sensörümüzün denizaltı periskopu gibi sağa sola dönmesini sağladık. Dc motor sürücüsü olarak da l298n motor sürücü kullandık. Kaynak olarak sadece şu üç kaynaktan faydalandım;

    Hc-sr04 sensör için: http://arduinodunyasi.blogspot.com.tr/2 ... animi.html
    Servo motor için: https://api.turkcell.com.tr/konu/arduin ... ervo-motor
    L298N motor sürücü için: https://www.youtube.com/watch?v=kE0Vrtbw4Vw

    Her bileşenin user's manuel'ini indirip baksanız da olur. Aynı şey. Amaç her parçanın nasıl çalıştığını öğrenmek. Sonra bu üç parçayı kullanarak engel tanıyan robotun kodlarını yazabilirsiniz.

    Devre şemasına da ihtiyaç duyar mısınız bilmiyorum ama bizim kodumuz şu şekilde:
    Kod:
    #include <Servo.h>  // Servo kutuphanesini include ettik
    Servo servom;  // Servo motor nesnesi yarattık
    const int trigPin = 12; //Hc-sr04'ün trig pini için
    const int echoPin = 13; //Hc-sr04'ün echo pini için
    const int in1=7; //L298N'nin in1 pini için
    const int in2=10;
    const int in3=5;
    const int in4=4;
    const int en1=6;
    const int en2=3;
    int hiz1=150; /* İleri hareket hızı */
    int hiz2=80; /* Dönme hızı */
    int sure=700; /* Dönme süresi */
    int x=0; /* Ultrasonik sensör öne bakarken gelen mesafe bilgisi için */
    int y=0; /* Ultrasonik sensör sola bakarken gelen mesafe bilgisi için */
    int z=0; /* Ultrasonik sensör sağa bakarken gelen mesafe bilgisi için */
    void setup()
    {
      servom.attach(11);  // Servo motoru 11 numarali pine bagladık      
      pinMode(trigPin, OUTPUT);
      pinMode(echoPin, INPUT);
      pinMode(in1, OUTPUT);
      pinMode(in2, OUTPUT);
      pinMode(in3, OUTPUT);
      pinMode(in4, OUTPUT);
      pinMode(en1, OUTPUT);
      pinMode(en2, OUTPUT);
      }
     
    void loop()
    {
      servom.write(78);
      x=ontara();
      delay(1000);
      while(x>20) { //Engele 20 cm yaklaşana kadar ilerleyecek
            ilerle();
            x=ontara();
            delay(100);
      }
          dur(); 
          delay(1000); 
          servom.write(180);
          delay(1000);
          z=sagtara();      
          delay(100);
          servom.write(0);
          delay(1000);
          y=soltara();
          if(y>=z){ //Sol mesafe sağdan büyükse sola dönüyor
           soladon();
           delay(1000);
             }
         else { //Sağ mesafe soldan büyükse sağa dönüyor
            sagadon();
            delay(1000);
            }
    }
    int sagtara(){
          
          long duration,cm;
          digitalWrite(trigPin, LOW);
          delayMicroseconds(2);
          digitalWrite(trigPin, HIGH);
          delayMicroseconds(10);
          digitalWrite(trigPin, LOW);
          duration = pulseIn(echoPin, HIGH);
         // pulsIn komutuyla veri alıyoruz
         // cm cinsinden dönüşümleri yapıyoruz
          cm = duration / 29 / 2;
          return cm;
    }
    int soltara(){
          long duration,cm;
          digitalWrite(trigPin, LOW);
          delayMicroseconds(2);
          digitalWrite(trigPin, HIGH);
          delayMicroseconds(10);
          digitalWrite(trigPin, LOW);      
          duration = pulseIn(echoPin, HIGH);
         // pulsIn komutuyla veri alıyoruz
         // cm cinsinden dönüşümleri yapıyoruz
          cm = duration / 29 / 2;
          return cm;
    }
    int ontara(){
          
          long duration,cm;
          digitalWrite(trigPin, LOW);
          delayMicroseconds(2);
          digitalWrite(trigPin, HIGH);
          delayMicroseconds(10);
          digitalWrite(trigPin, LOW);
          duration = pulseIn(echoPin, HIGH);
         // pulsIn komutuyla veri alıyoruz
         // cm cinsinden dönüşümleri yapıyoruz
          cm = duration / 29 / 2;
          return cm;
    }
    void ilerle(){
    analogWrite(en1, hiz1);
    analogWrite(en2, hiz1);
    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
    digitalWrite(in3, HIGH);
    digitalWrite(in4, LOW);
    }
    void soladon(){
    analogWrite(en1, hiz2);
    analogWrite(en2, hiz2);
    digitalWrite(in1, HIGH);
    digitalWrite(in2, LOW);
    digitalWrite(in3, LOW);
    digitalWrite(in4, HIGH);
    delay(sure);
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    digitalWrite(in3, LOW);
    digitalWrite(in4, LOW);
    }
    void sagadon(){
    analogWrite(en1, hiz2);
    analogWrite(en2, hiz2);
    digitalWrite(in1, LOW);
    digitalWrite(in2, HIGH);
    digitalWrite(in3, HIGH);
    digitalWrite(in4, LOW);
    delay(sure);
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    digitalWrite(in3, LOW);
    digitalWrite(in4, LOW);
    }
    void dur(){
    digitalWrite(in1, LOW);
    digitalWrite(in2, LOW);
    digitalWrite(in3, LOW);
    digitalWrite(in4, LOW);
    } 
    
     
  12. bidene

    bidene Süper Üye Süper Üye

    Kayıt:
    21 Temmuz 2014
    Mesajlar:
    2.478
    Beğeni:
    90
    hocam ben motor sürücü kartı yerine resimdeki motor sürücü devresini kullanmaya çalıştım.
    sanırım videolardaki sonuçlara o yüzden ulaşamadım.
    şimdi siparişi veriyorum :)
    şimdi sürücü kartının siparişini veriyorum.

    [​IMG]
     
  13. bidene

    bidene Süper Üye Süper Üye

    Kayıt:
    21 Temmuz 2014
    Mesajlar:
    2.478
    Beğeni:
    90
    const int en1=6;
    const int en2=3;
    hocam bu arada en bacakları ne oluyor çıkaramadım.
     
  14. buzdagi83

    buzdagi83 Seçkin Üye Seçkin Üye

    Kayıt:
    27 Eylül 2007
    Mesajlar:
    364
    Beğeni:
    544
    L298n üzerindeki en1 ve en2 pinleri dc motorlara giden akımı analog olarak kontrol etmeyi sağlıyor ve bu sayede motorların hızını kontrol etmenize imkan veriyor. Bu pinleri kullanmak istemeyebilirsiniz ama o zaman motorlar sürekli tam güçte çalışır. Bu da hem dönüşleri kontrol etmenizi güçleştirir hem de daha fazla pil tüketimine yol açar. :)
     
  15. inanin.ozu

    inanin.ozu Aktif Üye

    Kayıt:
    30 Kasım 2014
    Mesajlar:
    230
    Beğeni:
    85
    hocam netteki kodları alıp değiştirebilirsin. mesela servo motor ile sensör dönecek ise 180 derece dönmes gereksiz 140 150 derece yetiyo. sıkıstıgında geri gidecek ama biraz cok gitmesi bence önemli yoksa ileri geri gidip durur. ben yeni yazdım kodlarını hazır çalışıyo fakat deniyorum ki hatlarını bulup düzelteyim döngüleri. v.s.
    senin yapacagın;
    1-sensörden nası olçüm alacaksın
    2- bu ölçümü nası cm ye dönüştüreceksin
    3-döngülerile nası hareket edicek
    4- motoru nası sürüceksin
    ayrı ayrı arşatır kendin yaz kodunu bana sorarsan
    ama istersen ekleyeyim kodu.... genelde diğerlerinden bir kaç farkı var.bende net den alıp eklemeler düzeltmeler yaptım.
     
  16. inanin.ozu

    inanin.ozu Aktif Üye

    Kayıt:
    30 Kasım 2014
    Mesajlar:
    230
    Beğeni:
    85
    ayrıca elindeki kart çok iyi bi kart bence onu kullan...enable pinine yarışmada ihtiyacın yok orda en önemli şey hız.....
     
  17. bidene

    bidene Süper Üye Süper Üye

    Kayıt:
    21 Temmuz 2014
    Mesajlar:
    2.478
    Beğeni:
    90
    hocam ben nette kartın resimlerine bakıp anlamaya çalıştım elimde kart olmadığı için pinleri göremedim çok teşekkürler.
     
  18. bidene

    bidene Süper Üye Süper Üye

    Kayıt:
    21 Temmuz 2014
    Mesajlar:
    2.478
    Beğeni:
    90
    hocam ben o kartla netten faydalanarak bluetooth ile kontrol edilen araba yaptım. yani kodlar üzerinde inceleme yaparak pek çok düzenleme yaptım. hatta bunun gibi pek çok çalışmam var. ancak bir yerde tıkandım kaldım o yüzden yardım istiyorum.
    eğer kodları ve bağlantıyı paylaşırsanız çok memnun olurum
     
  19. Sargon

    Sargon Seçkin Üye Seçkin Üye

    Kayıt:
    30 Kasım 2007
    Mesajlar:
    354
    Beğeni:
    30
    Engelden kaçan robotum çalışır durumda. Arduino da kütüphaneleri eklerken dikkat edin hocam. 2 gün uğraştırdı bu robot. Yararlandığım kaynak ise;

    http://www.instructables.com/id/Arduino ... nic-Rover/

    Yukarıdaki linkteki kodlar sıkıntı yapınca aşağıda verdiğim kodlar ve kütüphaneleri sorunsuz çalışıyor. Bir deneyin derim.
     

    Ekli Dosyalar:

  20. bidene

    bidene Süper Üye Süper Üye

    Kayıt:
    21 Temmuz 2014
    Mesajlar:
    2.478
    Beğeni:
    90
    Hocam ben bunu yapmistim ancak calismadi.
    motorlardan garip sesler geliyordu ayruca duzgun calismiyordu.
    hemen deneyecegim sabah kodlari ;)
    Problem neydi kodlardaki bu arada
     

Sayfayı Paylaş /bbnetsosyal