Butona basılınca 1 arttıracak arduino programı

Merhaba;
butona basıldığında 1 sayacak bir program arıyorum. Butona basıldığında ve basılı tutulduğu sürece sadece 1 sayacak şekilde.. Aşağıdaki gibi bir örnek buldum fakat basılı tutulduğunda sayı artıyor. Kısacacı sayaç programı ihtiyacım var.
const int buton = 10; /* Butonun bağlı olduğu pin */
int sayac = 0; /* butona basılma sayısını tutacak değişken */
int butonDurumu = 0; /* Butonun durumu */
void setup() {
pinMode(buton, INPUT);
Serial. Begin(9600);
}
void loop() {
butonDurumu = digitalRead(buton);
if (butonDurumu == HIGH) {
delay(10); /* dalgalanmalar için biraz bekleyelim */
sayac ++; /* sayaç = sayaç + 1 yani sayaç değeri bir arttırıldı */
Serial. Print("Butona ");
Serial. Print(sayac); /* sayaç değerimizi ekrana yazdırıyoruz */
Serial. Println(". defa basildi.");
while(butonDurumu == HIGH){ /* Butona basili olduğu surece bekle */
butonDurumu = digitalRead(buton); /* Butonun durumunu kontrol et */
}
delay(10); /* dalgalanmalar için biraz bekleyelim */
}
}

S
0 kişi takip ediyor.
Misafir olarak yayınla
8
8 CEVAP

Bununla ilgili youtube lezzetli robot tarifleri kanalinda uygulama yapmışlardı

A

Oraya bakmanı tavsiye ederim

A

eyvallah bi inceleyeyim

Samet Gökçeoğlu 6 yıl

if (...)
{
while (...)
{ ...}
sayac++;
}
sekilde denersen daha iyi olur sanirim

Y

butonun rising edge olayındamı artacak, bastıkça her saniyemi artacak ne sıklıkta artacak bunlar bir çok etken ?

H

basılı tuttuğunda bi tane artıp artmayı kesmesini istiyorsan bu rising edge olayı.
bunun için bi değişken tutacaksın şöyle

H

const int buton = 10; /* Butonun bağlı olduğu pin */
int sayac = 0; /* butona basılma sayısını tutacak değişken */
int butonbasili = 0 ;
int butonDurumu = 0; /* Butonun durumu */
int sondurum = 0;
void setup() {
pinMode(buton, INPUT);
Serial. Begin(9600);
}
void loop() {
butonDurumu = digitalRead(buton);

if (butonDurumu != sondurum) {

if (butonDurumu == HIGH) {
sayac++;
Serial. Print("Butona ");
Serial. Print(sayac); /* sayaç değerimizi ekrana yazdırıyoruz */
Serial. Println(". defa basildi.");
}
delay(50);
}
sondurum = butonDurumu;

}

H

işte beyle

H

bu şekildede basılı tutulduğunda 1 sayıyor hocam.

Samet Gökçeoğlu 6 yıl

hayır modifiye etim ben onu

Hakan Takil 6 yıl

dene bi bakalım ben arduino başında değilim deneyemiyom ama mantığı budur.

Hakan Takil 6 yıl

Kod olarak çok mantıklı fakat canlıda çalışmadı. Çok teşekkürler. Denemeye devam ediyorum.

Samet Gökçeoğlu 6 yıl

bunun çalışması lazım ya, temas anında birden fazla kere temas ediyor olabilirsiniz.

Hakan Takil 6 yıl

butona 1 saniyede basılsa 10 saniyede basılsa 1 sayacak şekilde

S