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

işte beyle

H

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

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

hayır modifiye etim ben onu

Hakan Takil 5 yıl

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

Hakan Takil 5 yıl

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

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

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

Hakan Takil 5 yıl

delayı biraz arttırın

Hakan Takil 5 yıl

100 gibi

Hakan Takil 5 yıl

100 yaptığımda basılı tuttuğumda biraz daha yavaş sayıyor fakat gerçek sonuca ulaşamadım.

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

https://www.youtube.com/watch?v=b3Moy9dZiq0

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

video anlaşılabilimi bilmiyorum çok net değil sanırım. Aslında buton yerine lazer sensör var çok kargaşa yaratmamak ve aynı mantık olduğu için buton olarak sordum.

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

bu sensör nasıl çıkış veriyor bilmiyorum histerezis koymakta fayda var

Hakan Takil 5 yıl

sensör dijital sinyal gönderiyor fakat röle kullanarak kuru kontak olarak ardunioya kendi besleme sinyali gidiyor.

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

röle çılgın atmıyor dimi? Çek bırak yapıyor yani sizin saymasını istediğiniz gibi

Hakan Takil 5 yıl

yok hocam röle normal çek bırak yapıyor ama serial monirde sayma işleminde sıkıntı var

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

com-h9xoreqyj5r546xoknfm.jpg

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

bu benim kodu birebir kopyaladınız dimi ?

Hakan Takil 5 yıl

çünkü bakıyorum bakıyorum, öyle sayması imkansız daha önce kullandığım algoritma

Hakan Takil 5 yıl

sizide çok yorduk fakat bir türlü çözemedim. Röleden gelen sinyali 1 defa algılamsı için araya bir kod gerekiyor sanırım. Şu an röleden sinyal geldiği sürece sayaç artmaya devam ediyor.

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

süslü paantezlerin if else yapısının önemi büyük

Hakan Takil 5 yıl

mantık şu o kodda, röle değeri var reel, sanal röle değeri var diyelim, röleden değer geldimi sanal röle değerini 1 yapıyor, sayacı bir arttırıyor, döngü başa döndüğünde, röle geliyor, sanalröle değeride 0 ise tekrar girip arttırıyor tekrar girip arttırması imkansız

Hakan Takil 5 yıl

aynen kopyaladım kodunuzu sensör ve rölenin bağlantısının doğru olduğuna eminim sensöe ve röleyi devre dışı bıraktığımda kart üzerinden atlama kablo ile tetiği kendim veriyorum sonuç yine aynı

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

tekrar güncelledim yukarıdaki kodu

Hakan Takil 5 yıl

bide böyle deneyin

Hakan Takil 5 yıl

maalefes yine aynı sanırım söyle bir düzeltme gerek sensörün kestiğimde sayma devam ediyor yani 1 oluyor sonrasında tekar 0 olasıya kadar saymaması sonrasındaki 1 durumunda 1 arttırıp 2 olması gerekiyor.

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

bidaha deneyin tekrar güncelledim

Hakan Takil 5 yıl

https://www.youtube.com/watch?v=iUAmJ0XmzGE

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

son kodu uygulayıp çektim hocam

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

arduino editördeki kodunuzu komple bi kopyalayıp yapıştırırmısınız

Hakan Takil 5 yıl

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 */ void setup() { pinMode(buton, INPUT); Serial. Begin(9600); } void loop() { butonDurumu = digitalRead(buton); if (butonDurumu == LOW) { butonbasili=0; } if (butonDurumu == HIGH && butonbasili!=1) { butonbasili=1; 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."); delay(10); /* dalgalanmalar için biraz bekleyelim */ } }

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

tekrar güncelledim

Hakan Takil 5 yıl

com-m0itigctb9ryni2du89d.jpg

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

button buton olmalı yanlış yazmışım

Hakan Takil 5 yıl

tek t

Hakan Takil 5 yıl

bende sonradan farkettim aynı şekil değişen birşey yok malesef

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

imkansız valla, pin değiştirin bide voltajda da sorun olabilir

Hakan Takil 5 yıl

komple rölesiz deneyin, röle voltajı indiriyor olabilir

Hakan Takil 5 yıl

Sorun çözüldü hocam tebrikler önce 11. porta aldım bağlantı kablosunu dokundurduğum gibi sayı atmaya başladı. Sonra 0. porta aldım 0. portta sorun çalışıyor ya benim ardunio portlarında sıkıntı var yada 0.port'un ayrı bir özelliğimi var bilemedim. Farklı uygulamalrda bu portlarda bir sorun da yaşamadım aslında. İlginiz emeğiniz için çok teşekkürler

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

rica ederim, hep beraber memlekete fayda sağlıyoruz

Hakan Takil 5 yıl

eyvallah saygılar

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