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 */
}
}
Butona basılınca 1 arttıracak arduino programı
Samet Gökçeoğlu
S
0 kişi takip ediyor.
Paylaş:
8
Bununla ilgili youtube lezzetli robot tarifleri kanalinda uygulama yapmışlardı
Oraya bakmanı tavsiye ederim
eyvallah bi inceleyeyim
if (...)
{
while (...)
{ ...}
sayac++;
}
sekilde denersen daha iyi olur sanirim
butonun rising edge olayındamı artacak, bastıkça her saniyemi artacak ne sıklıkta artacak bunlar bir çok etken ?
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
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;
}
işte beyle
bu şekildede basılı tutulduğunda 1 sayıyor hocam.
hayır modifiye etim ben onu
dene bi bakalım ben arduino başında değilim deneyemiyom ama mantığı budur.
Kod olarak çok mantıklı fakat canlıda çalışmadı. Çok teşekkürler. Denemeye devam ediyorum.
bunun çalışması lazım ya, temas anında birden fazla kere temas ediyor olabilirsiniz.
butona 1 saniyede basılsa 10 saniyede basılsa 1 sayacak şekilde