Sesli komutlarla kontrol edilen robot (voice control robot)

90 24.960

Bu projemizde robotumuz söylenen komutlara göre hareket etmesi amaçlanmıştır.Android telefondan söylenen komut bluetooth ile arduinoya aktarılarak algoritmada karşılığı olan fonksiyonu gerçekleştirir.

Projede kullanılan komponentler:

  1. Arduino mega
  2. L293b motor sürücü
  3. Robot kit
  4. HC-SR04 Ultrasonik Mesafe Sensörü
  5. RGB led
  6. HC-06 Bluetooth modul
  7. Andoid uygulama

Ürünleri incele

 

Devre şeması:

 

Arduino Yazılımı:

#include <Servo.h>// servo motor kütüphanesi
#include <NewPing.h>//ultrasonik sensör kütüphanesi
String voice;
//motor pinleri
#define SolMotorileri 6
#define SolMotorGeri 5
#define SagMotorileri 8
#define SagMotorGeri 9
#define led 53
#define ledmavi 51
#define ledyesil 49
#define ledkirmizi 45
#define ledvcc 47

//sensör pinleri
#define USTrigger 3
#define USEcho 2
#define Maksimum_uzaklik 100

Servo servo; //servo motor tanımlama
NewPing sonar(USTrigger, USEcho, Maksimum_uzaklik);//ultrasonik sensör tanımlama
//kullanılacak eleman tanımı
unsigned int uzaklik;
unsigned int on_uzaklik;
unsigned int sol_uzaklik;
unsigned int sag_uzaklik;
unsigned int zaman;
// program ilk çalıştığında sadece bir kez çalışacak programlar
void setup()
{
Serial.begin(9600); //iletişim ayarı
//motor çıkışları
pinMode(SolMotorileri, OUTPUT);
pinMode(SolMotorGeri, OUTPUT);
pinMode(SagMotorileri, OUTPUT);
pinMode(SagMotorGeri, OUTPUT);
pinMode(led, OUTPUT);
pinMode(ledkirmizi, OUTPUT);
pinMode(ledmavi, OUTPUT);
pinMode(ledyesil, OUTPUT);
pinMode(ledvcc, OUTPUT);

servo.attach(4); //servo pin tanımı
}
// sonsuz döngü
void loop() {
while (Serial.available()){ //Okumak için kullanılabilir bayt olup olmadığını kontrol et
delay(10); //10 milisaniye bekle
char c = Serial.read(); //Seri okuma
if (c == '#') {break;} // # tespit edildiğinde döngüden çık
voice += c; //Ses = ses + c Steno
}
if (voice.length() > 0) {
Serial.println(voice);

if(voice == "*ileri"||voice == "*ileri git") {ileri();}
else if(voice == "*geri"||voice == "*geri gel"){geri();}
else if(voice == "*sağa dön"||voice == "*sağ") {sag();}
else if(voice == "*sola dön"||voice == "*sol") {sol();}
else if(voice == "*dur"||voice == "*arabayı durdur") {dur();}
else if(voice == "*sol ileri"){sol(); delay(100); ileri();}
else if(voice == "*sağ ileri"){sag(); delay(100); ileri();}
else if(voice == "*sol geri"){sol(); delay(100); geri();}
else if(voice == "*sag geri"){sag(); delay(100); geri();}
else if(voice == "*ileri git dur"||voice == "*biraz ileri git") {ileri(); delay(500); dur();}
else if(voice == "*geri gel dur"||voice == "*biraz geri gel") {geri(); delay(500); dur();}
else if(voice == "*sola dön dur"||voice == "*biraz sola dön") {sol(); delay(500); dur();}
else if(voice == "*sağa dön dur"||voice == "*biraz sağa dön") {sag(); delay(500); dur();}
else if(voice == "*sola bak"||voice == "*soluna bak") {solabak();}
else if(voice == "*sağa bak"||voice == "*sağına bak") {sagabak();}
else if(voice == "*önüne bak"||voice == "*öne bak") {onunebak();}
else if(voice == "*ışığı aç"||voice == "*ledi yak") {ledyak();}
else if(voice == "*ışığı kapat"||voice == "*ledi söndür") {digitalWrite(51,HIGH);
digitalWrite(49,HIGH);
digitalWrite(45,HIGH); digitalWrite(47,LOW);}
else if(voice == "*kırmızı") {digitalWrite(45,LOW); digitalWrite(49,HIGH);
digitalWrite(51,HIGH); digitalWrite(47,HIGH);}
else if(voice == "*yeşil") {digitalWrite(49,LOW); digitalWrite(45,HIGH);
digitalWrite(51,HIGH); digitalWrite(47,HIGH); }
else if(voice == "*mavi") {digitalWrite(51,LOW); digitalWrite(49,HIGH);
digitalWrite(45,HIGH); digitalWrite(47,HIGH);}
else if(voice == "*mor") {digitalWrite(51,LOW); digitalWrite(49,HIGH);
digitalWrite(45,LOW); digitalWrite(47,HIGH);}
else if(voice == "*beyaz") {digitalWrite(51,LOW); digitalWrite(49,LOW);
digitalWrite(45,LOW); digitalWrite(47,HIGH);}
else if(voice == "*engel"||voice == "*engel algıla"){engel();}

voice="";}}

// robotun yön komutları
void ileri()
{
digitalWrite(SolMotorGeri, LOW);
digitalWrite(SolMotorileri, HIGH);
digitalWrite(SagMotorGeri, LOW);
digitalWrite(SagMotorileri, HIGH);
}

void geri()
{
digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorGeri, HIGH);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorGeri, HIGH);
}

void sag()
{
digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorGeri, HIGH);
digitalWrite(SagMotorGeri, LOW);
digitalWrite(SagMotorileri, HIGH);
}

void sol()
{
digitalWrite(SolMotorGeri, LOW);
digitalWrite(SolMotorileri, HIGH);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorGeri, HIGH);
}

void dur()
{
digitalWrite(SolMotorGeri, LOW);
digitalWrite(SolMotorileri, LOW);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorGeri, LOW);
}
void sagabak()
{
servo.write(0);
delay(100);
}
void solabak()
{
servo.write(180);
delay(100);
}
void onunebak()
{
servo.write(90);
delay(100);
}
void ledyak()
{
digitalWrite(53,HIGH);
}
void ledkapat()
{
digitalWrite(53,LOW);
}
// sensörün mesafe ölçümü
void sensor_olcum()
{
delay(50);
zaman = sonar.ping();
uzaklik = zaman / US_ROUNDTRIP_CM;
}
void engel()
{
delay(500);
servo.write(90);
sensor_olcum();
on_uzaklik = uzaklik;
if(on_uzaklik > 35 || on_uzaklik == 0)
{
ileri();
}
else
{
dur();
servo.write(180);
delay(500);
sensor_olcum();
sol_uzaklik = uzaklik;
servo.write(0);
delay(500);
sensor_olcum();
sag_uzaklik = uzaklik;
servo.write(90);
delay(500);
if(sag_uzaklik < sol_uzaklik)
{
sol();
delay(500);
ileri();
}
else if(sol_uzaklik < sag_uzaklik)
{
sag();
delay(500);
ileri();
}
else
{
geri();
}
}
}

Android uygulamayı buradan indirin. Bluetooth modülle eşleştirme yapıp bağlanın. Uygulama google tabanını kullandığı için internete bağlı olmanız gerekir. Bağlantıyı kurduktan sonra mikrofon simgesine dokunun ve konuşun. Robotunuz söylediğiniz komuta göre işlevini yapacaktır.

Bunlar da İlgini Çekebilir
Cevap bırakın

E-posta hesabınız yayımlanmayacak.

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

90 Yorum
  1. Furkan güngördü

    Merhaba ben bu robotun Türkçe sesle kontrollüsünü yapmayı düşünüyorum ne gibi adımlar izlemem lazım yardımcı olabilir misiniz

  2. mahmut

    Sistem çalışıyor fakat android uygulamada error 516 unable to write broken pipe hatası veriyior. Lütfen yardımcı olurmusunuz?

  3. onur

    Android Uygulama yok bi bakar mısınız lütfen kontrol edemiyorum

  4. cakin

    android uygulamaya ulaşamadım. İlgilenirmisiniz rica etsem

  5. Yılmaz

    Android uygulamayı play store den kaldırılmış nasıl ulaşabilirim yardımcı olur musunuz

  6. Uğur Kezer

    Bu kodlar Bluetooth modulü içinmi yoksa normal mikrofonlada çalışması içinmi ?

  7. Melda Çelenk

    tek bir servo motor için motor sürücüsü kullanmak yeterli mi.Birde ben mega yerine uno r3 kullandım yeterli olur mu?kod yazmada bana nasıl yardımcı olabilirsiniz?

    1. Sezgin GÜL

      servo motor için motor sürücü kullanılmaz. pinlerini direk arduinoya takmanız yeterli. mega yerine uno kullanabilirsiniz. fakat koddaki bazı pin numaraları uno da bulunmadığından o numaraları unada boş olan pin ile değiştirebilirsiniz.

  8. Kadir

    Hocam Led’in yanındaki malzeme ne oluyor birde daha detaylı bir şekilde atabilirmisiniz bitirme tezi olarak yapmak istiyorumda

  9. Selim

    Arduino mega ya atilan kodu ardunio uno ya atsak calisir mi

    1. Sezgin GÜL

      ledlerin pin numaraları uno da bulunmadığı için onların numaralarını başka pinle değiştirmeniz gerekiyor. Diğer kısımlar sorunsuz çalışır.

  10. Kübra

    Ben bu projeyi yapacağım . Özellik olarak 1metre ileri git şeklinde komut vermek istiyorum nasıl yapılır?

    1. Sezgin GÜL

      Tekerleğin çevre uzunluğunu hesaplayarak bir tur attığında ne kadar yol alacağı belirlenir. 1 metrede ne kadar tur atacağını bu değere bölerek bulunuz. Sistemde dc motor kullanıldığı için tur sayısına göre döndürmenin iki yolu var. birinci yol enkoder kullanarak tur sayısını ölçebilirsiniz. Bu yöntem en sağlıklısıdır. İkinci yöntem bir tur attığında ne kadar süre geçiyor bunu deneyerek hesaplayabilirsiniz. Fakat bu yöntemde sistemin enerjisi zamanla azalacağı için aynı sürede alınan tur sayısı eşit olmayacaktır. Üçüncü yöntem ise dc motor yerine step motor kullanmak. Bu motorların adımları sabit olduğu için turu doğru şekilde tamamlar. Step motor kullanacaksınız kodda da hareket fonksiyonlarını değiştirmeniz gerekir. Bu yöntemlerden birini kullanarak belirlediğiniz uzaklık kadar ilerlemesini sağlayabilirsiniz.

      1. kübra

        // sensörün mesafe ölçümü
        void sensor_olcum()
        {
        delay(50);
        zaman = sonar.ping();
        uzaklik = zaman / US_ROUNDTRIP_CM;
        }
        bu kodu ne işe yarıyor ?
        sizin yaptığınız bu projede servo motor mu kullandınız ?

        1. Sezgin GÜL

          mesafe ölçme fonksiyonu.

        2. kübra

          step motor kullanacaksam kodu nasıl yazmalıyım ?

          1. kübra

            bu fonksiyondan istediğim özelliği yapabilir miyim ?

  11. emre

    merhaba hocam ben bu devrenin aynısını unoda yaptım led leri sildim bir tek kodları doğrularken herhangi bir sıkıntı olmuyor bluetooth la telefonu eşleştiriyorum interneti açıyorum komutları söylüyorum ama herhangi bir hareket olmuyor l293d den olabilir diye düşündüm yenisini aldım yine aynı ayrıca devrede hiç bir şey tepki vermiyor ama çalışıyorlar yardımcı olabilir misiniz hocam

  12. Emrah

    merhaba. ben yapacağım proje sadece ses komutu ile ileri geri sağa sola gitmesi bunun için yukarda verilen kodlarda sadece o kısmı alınca çalışırmı acaba? ve arduino mega yerine unu kullanırsak olur mu ?

    1. İrfan

      Çalışır pin yeterse uno kullanabilirsin

  13. irfan

    arkadaşlar robot engel algılamıyor bilen biri varsa el atabilir mi acaba ? teşekkürler.

  14. niyazi

    Arduino:1.6.7 (Windows 7), Kart:”Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)”

    C:\Users\hp\Documents\Arduino\wfsdcvbn\wfsdcvbn.ino:2:55: fatal error: NewPing.h: No such file or directory

    #include //ultrasonik sensör kütüphanesi

    ^

    compilation terminated.

    exit status 1
    Derleme sırasında hata oluştu.

    Rapor daha fazla veri içermeli
    “Derleme sırasında ayrıntılı çıktı göster”
    Dosya > Tercihler’de etkinleştirilmiş.

    hocam bu hatayı nasıl düzeltebilirim?

  15. İfan yolcu

    Hocam android program ios için olanı varmı ?teşekkürler

  16. tuncay

    merhaba projenizi inceledim ve aynı projeyi yapıcam ama yapmak istedigim projede beni sürekli dinleyen bir uygulama istiyorum yani ben susarsam komut gönderecek ve bana anlamadım diye ger dönüş yapmaycak bir uygulamaya ihtiyacım var. eger yardımcı olursanız sevinirim tabi yardım edemeseniz de yine de çok teşekkür ederim

  17. Çağrı ÇAĞMAN

    hocam sadece sesle kapıyı açıp kapatacak şekilde bir sistemim var ama kod sıkıntısı yaşıyorum kapıyı aç komutunu sesle gönderdiğimde kapıyı 90 derece açacak şekilde nasıl yapabilirim bana yardımcı olabilir misiniz.

  18. Furkan ARAR

    Hocam merhaba, ardunio ya yüklediğimiz zaman kütüphane istediği için yüklenmiyor.Kütüphaneyi nasıl bulabilirim.

  19. emir altıntop

    HOCAM projeden bende yapmak istiyorum ama az zamanım var bu işlerden pekde anlamıyorum acaba çok zamanınızı aldımı ve ekipmanların ücreti ne kadar ?
    saygılar

  20. sami

    merhaba,engel fonksiyonunda bir sorun var return engel(); yazdığımda çalışıyor ama bundan sonra başka komut veremiyorum

  21. berkan özkan

    bunu arduino uno ile yapabilir miyiz ?

    1. Sezgin GÜL

      Pin sayısı yetiyorsa yapabilirsiniz.

  22. Ali Furkan

    Hocam engel algıla komutunu söylediğim zaman robota çalışmaya başlıyor ama daha sonra verdiğim komutların hiçbiri çalışmıyor mesela dur dediğimde durmuyor sadece engele göre hareket ediyor bu neden olabilir acaba?

  23. yunus akcan

    hocam merhaba lipo batarya yerine 9v pil kullansak olurmu bide arduino megaya hiç+ uç gitmemiş bi yanlışlık olabilirmi şimdididen teşekkürler

    1. Sezgin GÜL

      9v pil yeterli olmaz. çalıştırır fakat çok erken biter. devre şemasında lipo pil sadece motorların beslemesi için kullanıldı. arduinoyu 9v pille ayrı besle.

  24. UĞUR KARADAŞ

    hocam kolay gelsin ben devre şemasının tam açık bir gösterim hali var mı bu şema biraz kafamı karıştırdı.
    Yardımcı olursanız çok sevinirim.Şimdiden teşekkürler.

    1. Sezgin GÜL

      devre şemasını güncelledim.

  25. Ali Furkan

    Sezgin hocam bir sorum daha olacak ben bunu 4 DC motor kullnarak yapmak istiyorum programda ne gibi bi değişiklik yapmam gerekir veya devrede?

    1. Sezgin GÜL

      4 tekerlekli robot kite yapacaksın sanırım. kodda değişiklik yapmana gerek yok. sol taraftaki motorları birbirine paralel bağla aynı şekilde sağ taraftaki motorları birbirlerine bağla. yani sol taraf bir hareket edecek aynı şekilde sağ taraf bir hareket edecektir.

      1. Ali Furkan

        hocam teşekkürler. bir sorum daha olacaktı ben rgb led kullandığımda ışığı aç dediğimde rgb led yanmıyor fakat kırmızı dediğimde kırmızı yanıyor veya ışığı kapat dediğimde ışığı kapatıyor.

        1. Sezgin GÜL

          ışığı aç komutunda ledyak() fonksiyon çalışıyor. o fonksiyonda da 53.pin high oluyor. yani rgb led o pine tanımlı olmadığı için yanmıyor. o pine tekli led takmıştım.

  26. murat

    Hocam tamam buldum projeyi size bir sorum olacaktı bu projede kullanacağımız pi kaç volt olsun ve yaklaşık bir saat çalışması için lipo pilimiz kaç mA olsun

  27. murat

    Hocam breadboard üzerinde ivme sensörü ve iki tane servo motorla kol şeklinde basit bir şey yapılmıştı breadboardu ne tarafı çevirirsek kol aynı yöne dönüyordu

  28. Ali Furkan

    hocam 2000 mah yerine 3000 mah lık şarjlı pil kullansam bi sıkıntı olur mu acaba ?

    1. Sezgin GÜL

      bu projedeki gibi yapacaksan 3000 mah gereksiz. 1050 mah yeterli olur

  29. Murat

    Hocam sitenizde ivme sensörü ile yapılmış bord üzerine kurulmuş taklitçi robot vardı onu bulamadım kaldırdınız mı acaba basit bir şeydi yardımcı olursanız onu yapmak istiyorum

    1. Sezgin GÜL

      taklitçi robot derken ?

  30. Ali Furkan

    Hocam kullanacağımız batarya lipo batarya mı acaba ?

    1. Sezgin GÜL

      fark etmez istediğini kullan. lipo olursa daha uzun süre dayanır.

  31. Yasin

    Hocam bu malzemelerin hepsini alabileceğim bir link verebilir misiniz?
    Birde yapımı hakkında videosu falan yok mu acaba?
    Okuldaki hocam benden büyük bir proje istedi bunu yapacağım bilgim az çok var yalnız malzemeleri türkiyeden temin etmem gerekiyor bir site tavsiye ederseniz birde nasıl yapacağıma dair bir kaynak verirseniz çok dua ederim size…

    1. Sezgin GÜL

      robotistan, direnç net gibi yerlerden alabilirsin. yapım videosu mevcut değil. takıldığın yerlerde sorabilirsin.

      1. Yasin

        Sezgin hocam peki direnç gerekli mi? gerekliyse kaç adet?
        jumper kablodan kaç tane gerekli?
        malzemelerin hepsini sipariş verdim başlayacağım da bunlar hakkında bilgi almak istiyorum.

        1. Sezgin GÜL

          bir set jumper kablo yeterli. led kullanırsan direnç alabilirsin.

          1. Yasin

            Hocam skype adresiniz var mı acaba?
            Ürünler elime ulaştı sizinle bu konu hakkında konuşmak istiyorum lütfen yardım edin?

  32. remzi

    son sorum 🙂
    genelde voıd setup ve voıd loop döngusunun ne oldugunu bılıyorum.
    ama kodalra bakınca voıd ileri () voıd led yak() gbi ifadeler kullanılmıs hangı amacla akılıma gelen ılk sey
    istenıldıgı zaman devreye girmesidir öle midir yardımcı olur sanız cok sevinirim.

    1. Sezgin GÜL

      öyle denebilir. koşullara göre tanımladığın olayı çağırmadır.

  33. remzi

    servo motor yerine dc motor kullansam kodlarda herhngı bir degısıklık yapmama gerek var mı?
    ayrıca ledi yakmak istemezsem ledle ılglı kısımları sılmem yeterlı olacak mıdır ….
    tesekurler.

    1. Sezgin GÜL

      dc motor zamanlama ile kontrol edeceğinden her dönüşte aynı yol almayabilir. yani voltaj ve akım değişkeni farklı olduğunda bu sorun olabilir. sola ve sağa bak fonksiyonlarında servo kontrolünü silip dc motor kontrolünü eklemen gerek. onu da diğer fonksiyonlardaki dc motor kontrolü gibi yapabilirsin. Led istemiyorsan lede ait fonksiyonları ve pinlerini silmen yeterlidir.

  34. Serdar Taneri

    Hocam tekrar merhaba “return” komutunu bir turlu koyacagım yeri bulamadım, hep hatalar alıyorum musaıt zamanınızda tam yerını verırsenız sevınırım

    1. Sezgin GÜL

      void engel() tanımlı algoritma var onun içine en alt kısıma return engel(); bunu yaz

      1. ümit

        bu robotun aynısından yaptım her şey çalışıyor lakin engel algıla dediğimde engele geldiğinde alğılamıyordu sizin return engel(); komutunu yaptım alğılıyor lakin bu seferde diğer komutlar işkemiyor

  35. Serdar Taneri

    Merhaba hocam kodları UNO kullarak karta yükledim test etmek için aşağıdaki satırları değiştirdim.
    Ama daha Ledi bile yakamadım, şu an servo , motor ve motor sürücü bağlı değil ama bundan yaparmı ?
    Serial monitör ile kontrol ettiğimde Arduino şu şekilde algılıyor sesi , sorunum karakter sorunumu ?
    Eğer bundan ise nasıl yol almam gerekir.

    Teşekkürler

    Serial monitor : i.hizliresim.com/nLpnZM.jpg

    #define led 7

    void ledyak()
    {
    digitalWrite(7,HIGH);
    }
    void ledkapat()
    {
    digitalWrite(7,LOW);

    1. Sezgin GÜL

      serialden test ederken komutların başındaki * karakterini silip o o şekilde kodu yükle ve serialden komut gönder. Ama telefondan konuşarak kontrol edeceksen * karakterlerini tekrar eklemen gerekiyor

      1. Serdar Taneri

        Hocam tekrar merhaba şuan ‘engel algıla’ haric tum komutlar calısıyor. Linkte kullandıgım koda bakabilirsiniz. Engel kısmında ileri gitmeye baslıyor ama sensor engel algılamıyor servo donmuyor, tum baglantıları ve kabloları bircok kez denedim ama malesef calıstıramadım.

        Siz ‘engel” kısmını denemişmiydiniz?

        Elinize ve emeğinize saglık , paylasım ve yardımınız icin.

        1. Serdar Taneri

          drive.google.com/file/d/0B56DTKrX77F9MFFIVUlhRmJQbFU/view?usp=sharing

          1. Sezgin GÜL

            engel fonksiyonunun altına return yazarak döngüyü tekrarlatın

  36. meltem

    hocam servo ve ultrasonik sensörlerin bağlantısı hakkında biraz detay verebilir misiniz?

    1. Sezgin GÜL

      servo motor sinyal pini 4. dijital pine takılacak artı ucu 5v eksi ise gnd ye takın. ultrosonik sensör ise üzerinde trig ve echo pini yazar trigger pini 3. dijital pine echo pini ise 2. dijital pine takın artı ucu 5v eksi ucu ise gnd ye takın.

  37. Sezgin GÜL

    pin yapısında fark yok fakat b serisi 2 ampere kadar akıma dayanırken d serisi 1.2 ampere kadar dayanmaktadır. Sizdeki büyük ihtimalle adafruit motor shield olabilir.

    1. rejva

      tekrar rahatsız edıyorum k.bkmayın mega yerine uno kullansak olur mu

      1. Sezgin GÜL

        olur tabiki de pinler yetiyorsa sorun yok

  38. rejva

    acaba devre semasını daha ayrıntılı şekilde paylasma şansımız var mı?

    1. Sezgin GÜL

      Devrede her bağlantı gösterildi nerede takıldınız ?

      1. rejva

        videoyu izleidgimde devra şemeasındn daha fazla kablo var ve robot kit iki katlı arada ne oldugunu kabloların nereye gittiğini merak ettim led koymussunuz ben sola dön dedıgımde sol led yanıp donmesını ıstıyorum ve rbg ledleri bulunmuyomus onun yerıne ne kullanabılırım

        1. Sezgin GÜL

          Kitin arasında batarya var ve devre şemasıyla aynı. Sadece rgb led videoda yok. Onu da devre şemasında gösterdim. Normal kullanabilirsiniz. Sola dön fonksiyonunun içine ledyak fonksiyonu ekleyerek aynı anda ledi de yakabilirsiniz.

          1. rejva

            kusura bakmayın bsy de sormak ıstıyorum l293d ile l293b arasında bı fark var mı motor surucu mu yoksa entegremı kullanalım ben cok farklı bsy aldım da galıba ustunde 2 tane motor var 3 entegre var da

  39. mert

    Tamamdır. Çok teşekkürler yardımınız için.

  40. Sezgin GÜL

    char c = BT.read(); fonksiyonundan sonra bu fonksiyonu yaz >> if (readvoice == ‘#’) {break;}

    1. mert

      Teşekkürler yinede char c = BT.read(); fonksiyonundan sonra if (readvoice == ‘#’) {break;} yazdım ama olmadı.Kodun son hali link:
      app.box.com/s/f07l7ebqp599rk1e68gzcuiasgu019ct

      1. Sezgin GÜL

        return; fonksiyonunu tanımlanan fonksiyonların altına yazıp tekrar dene . Benim robotta öyle sorun yoktu. Projedeki yazılıma bakıp tekrar dene
        Ayrıca sensör ölçüm kodlarını da tanımlı fonksiyonların içinde hesaplattır.

        1. mert

          Ses Komutlarının yanına yazdım başka nereye yazabilirim bilmiyorum hangi fonksiyona yazmam gerekir, konuya çok hakim değilim.Şimdiden teşekkürler.

          1. Sezgin GÜL

            Ses komutlarının olduğu yerden sil yani loop içine yazma. Tanımladığın parça fonksiyonların içine yaz

  41. mert

    Merhaba Benim bir sorum olacak. Ben buna benzer bir proje yaptım ama kodlamada bir sıkıntım var. Hem Bluetooth hem de engel algılayan robot yapmak istiyorum ama 2 sini birden yapamıyorum. Yazdığım kodda robota bir command gönderdiğimde, önceki command ın yanına yazıyor Serial portta. Yani resetleyemiyorum.Bunu nasıl halledebilirim?Şimdiden teşekkürler.Yazdığım kodun linki:
    app.box.com/s/f07l7ebqp599rk1e68gzcuiasgu019ct

    1. Sezgin GÜL

      komut tanımlarının en altına bunu ekle readvoice = “”; . Yazılımda engel algılama fonksiyonları while(BT.available()) fonksiyonun dışında yani bluetootht a bağlı iken engel komutları dışta kaldığı için çalışmıyor. O kodları while(BT.available()) fonksiyonunun içine yazmalısın.

      1. mert

        Dediğinizi yaptım ama ben komut gönderdikten sonra engel sensörleri çalışmıyor sadece komut gönderir göndermez çalışıyor.Ama ben sürekli çalışmasını istiyorum.Bunu nasıl yapabilirim.Yani ben komut gönderdiğimde o komut bir sonraki komuta kadar geçerli olmasını istiyorum çünkü o eklediğim readvoice=””; hemen reset atıyor ve komutu siliyor ve o komutun döngülerini çalıştırmıyor bunu nasıl yapabilirim.Son yaptığım kod link:
        app.box.com/s/f07l7ebqp599rk1e68gzcuiasgu019ct

        1. Sezgin GÜL

          readvoice=””; fonksiyonunu dışarıda yazmışsın. readvoice=””; ifadesini if(readvoice.length()>0) ifadesinin içine yaz. Engel algılamasında ise komutların altına return; fonksiyonunu ekle.Algoritmayı döndürecektir.

          1. mert

            Teşekkürler yardımınız için birşey daha soracağım ben komut gönderdiğimde istediğim komut başlıyor ama bir daha gönderdiğimde eski komutu sadece siliyor ve sonra bir daha komut gönderiyorum o zaman o komut çalışıyor. Yani yeni komutla reset atıyor sonra bir daha komut verince çalıştırıyor. Peki bunu direk eski komutun yerine yeni komutu direk nasıl çalıştırabilirim. Şimdiden teşekkürler.

  42. rejva

    ben de böyle bir proje yapmayı düşünüyorumda hangi dilde yazılmıs acaba arduino bu yoksa c dilinde mi bide telefona bağlarken her hangi bir işlem yapmamız gerekiyor mu acaba ?

  43. Enes

    Hocam Android telefondan söylediğimiz komutları algılama işlemini nasıl yapıyorsunuz?
    Takıldığım yer burası.

    1. Sezgin GÜL

      Android programı “google’ın sesi yazıya çevirme ” uygulaması tabanıyla gerçekleştiriyor.Yani uygulama internete bağlı iken çalışmaktadır.Bu sayede google çeviri yapıyor.

    2. Erol

      Devreyi aynıdını yaptık ama hc05 Bluetooth modülünü kullandık lakin bir türlü bağlantı kuramadık modül ile Arduino serial Port tan kodu yazdım örnek serial porttan ileri ama yine hiç bir hareket olmadı hc05 bağlantısını kurarken bir yerlerde hata yapıyorum. Nasıl bağlantı kuracağız hc 05 ile

      1. Sezgin GÜL

        bağlantılarınız doğru ise muhtemelen sorun hc-05 in baudrate değeri 38400 oluyor genelde . Modülün iletişim hız değerini at komutu ile 9600 yapın ya da koddaki iletişim hız değerini 38400 yapın. Modülün değerini 9600 yapmanız daha kesin olur.