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

Katılım
16 Haz 2021
Mesajlar
10
Puanları
1
Yaş
18
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);
}

)
 
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.
 
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.
 
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;
}
 
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.
 

Yeni mesajlar

Forum istatistikleri

Konular
127,965
Mesajlar
913,961
Kullanıcılar
449,611
Son üye
ramazansanli@

Yeni konular

Geri
Üst