Butona basıp bıraksam da veri sürekli gidiyor ne yapabilirim

  • Konbuyu başlatan İlker Hasan KIZMAZ
  • Başlangıç tarihi
Katılım
16 Haz 2021
Mesajlar
10
Puanları
1
Yaş
16
Arduino Uno kartı ile Bluetooth kontrollü bir araba yaptım, ancak ben telefondan tuşa basılı tuttukça veri gitmesini istiyorum fakat ben basıp çeksem bile sürekli olarak veri gitmeye devam ediyor ben bu sorunu nasıl çözebilirim?(komutların bir kısmı şöyle:

if(veri=='1'){
ileri();
}
else if(veri=='2'){
geri();
}

void ileri(){
digitalWrite(IN1, 1);
digitalWrite(IN2, 0);
digitalWrite(IN3, 1);
digitalWrite(IN4, 0);
analogWrite(enA, hiz);
analogWrite(enB, hiz);
}
void geri(){
digitalWrite(IN1, 0);
digitalWrite(IN2, 1);
digitalWrite(IN3, 0);
digitalWrite(IN4, 1);
analogWrite(enA, hiz);
analogWrite(enB, hiz);
}

)
 

FakirMaker

Katılımcı Üye
Katılım
5 May 2009
Mesajlar
515
Puanları
56
Pinleri sen 0 yapmadıkça önceki durumunu korumaya devam eder mesela ileri fonksiyonundaki IN1 pini 1 oluyor ve 1 olmaya devam ediyor. Yani bir stop fonksiyonu koyup tüm çıkışları 0 yapman gerekir. Yoksa 1 tuşuna basınca ileri gider 2 tuşuna basınca geri gider asla durmaz.
 
Konu Sah
Katılım
16 Haz 2021
Mesajlar
10
Puanları
1
Yaş
16
Pinleri sen 0 yapmadıkça önceki durumunu korumaya devam eder mesela ileri fonksiyonundaki IN1 pini 1 oluyor ve 1 olmaya devam ediyor. Yani bir stop fonksiyonu koyup tüm çıkışları 0 yapman gerekir. Yoksa 1 tuşuna basınca ileri gider 2 tuşuna basınca geri gider asla durmaz.
Yorumun için teşekkür ederim. Aracımda dur fonksiyonu da var, belirlediğim verilerin dışında veri alınca duruyor. Benim istediğim ben basılı tutunca veri göndersin, şu an ben basıp çekince sürekli olarak aynı veriyi gönderiyor.
 

FakirMaker

Katılımcı Üye
Katılım
5 May 2009
Mesajlar
515
Puanları
56
Veriyi gönderen arduino değil dolayısıyla göndermeyi verici kısmında halledebilirsin ama sürekli yinelenen verinin okunması engelleyebilirsin.

en başa

C++:
byte son_alinan_veri;

tanımlarsın ve her gelen verinin son alınanla aynı olup olmadığını kontrol edersin eğer aynıysa hiçbir işlem yapmaz

C++:
if(veri != son_alinan_veri){
    if(veri=='1'){
        ileri();
    }
    else if(veri=='2'){
        geri();
    }
    son_alinan_veri = veri;
}
 
Konu Sah
Katılım
16 Haz 2021
Mesajlar
10
Puanları
1
Yaş
16
Veriyi gönderen arduino değil dolayısıyla göndermeyi verici kısmında halledebilirsin ama sürekli yinelenen verinin okunması engelleyebilirsin.

en başa

C++:
byte son_alinan_veri;

tanımlarsın ve her gelen verinin son alınanla aynı olup olmadığını kontrol edersin eğer aynıysa hiçbir işlem yapmaz

C++:
if(veri != son_alinan_veri){
    if(veri=='1'){
        ileri();
    }
    else if(veri=='2'){
        geri();
    }
    son_alinan_veri = veri;
}
Yorumun için çok teşekkür ederim, kullandığım uygulamayı değiştirince sorunu çözdüm.
 

Forum istatistikleri

Konular
117,267
Mesajlar
826,401
Kullanıcılar
426,948
Son üye
umut...

Yeni konular

Üst