Endorfin35+
Kayıtsız Üye
- Katılım
- 1 Mayıs 2020
- Mesajlar
- 4,473
Normalde debounce kodlarımçalışıyor ancak her buton için ayrı kod yazmak zorunda kalıyorum. Yazıdığım kodu fonksiyon haline getiremedim. Fonksiyon haline getirdiğim zaman buton başına +1 boolean bir değişken tanımlamam gerekiyor ki olması gereken bu mu emin değilim.
Kurduğum temek mantık şu şekilde;
debounce aşamasında sağlıksız 10101101 veriler geliyor ve sonra 1 verisi geliyor. 1 verisi geldikten sonra 50ms gibi bir süre boyunca tekrar 0 gelmez ise debounce aşaması tamamladı kabul edip işleme geçiyorum.
Aslında kod içeriğinde delay yok burda mantık anlaşılsın diye basit yazım. Sıkıntı yaşadığım konu zaman sayacını sıfırlama...
Buton A aktifse say değilse sıfırla
Buton B aktifse say değilse sıfırla
Butonların hepsi aktif olmadığına göre sürekli sıfırla oluyor.... Bunu aşmanın yolu her buton için ayrı bir değişken daha tanımlama. Aklıma daha basit bir şey gelmiyor. Belki buran birşey çıkar
Kurduğum temek mantık şu şekilde;
debounce aşamasında sağlıksız 10101101 veriler geliyor ve sonra 1 verisi geliyor. 1 verisi geldikten sonra 50ms gibi bir süre boyunca tekrar 0 gelmez ise debounce aşaması tamamladı kabul edip işleme geçiyorum.
Kod:
if (buton == LOW) zaman=0;
if (buton == HIGH)
{
delay(1);
zaman++;
if (zaman < 50) // 50ms Debounce süresi boyunca birşey yapma
{
}
else if (zaman < 1000) // butona basılıyor. 1. Fonksiyon (normal işlem)
{
foksiyon_1();
}
else if (zaman >1000) // butona basılıyor. 2. Fonksiyon (hızlı işlem)
{
fonksiyon_2();
}
}
Aslında kod içeriğinde delay yok burda mantık anlaşılsın diye basit yazım. Sıkıntı yaşadığım konu zaman sayacını sıfırlama...
Buton A aktifse say değilse sıfırla
Buton B aktifse say değilse sıfırla
Butonların hepsi aktif olmadığına göre sürekli sıfırla oluyor.... Bunu aşmanın yolu her buton için ayrı bir değişken daha tanımlama. Aklıma daha basit bir şey gelmiyor. Belki buran birşey çıkar
