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ş:
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.
delayı biraz arttırın
100 gibi
100 yaptığımda basılı tuttuğumda biraz daha yavaş sayıyor fakat gerçek sonuca ulaşamadım.
https://www.youtube.com/watch?v=b3Moy9dZiq0
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.
bu sensör nasıl çıkış veriyor bilmiyorum histerezis koymakta fayda var
sensör dijital sinyal gönderiyor fakat röle kullanarak kuru kontak olarak ardunioya kendi besleme sinyali gidiyor.
röle çılgın atmıyor dimi? Çek bırak yapıyor yani sizin saymasını istediğiniz gibi
yok hocam röle normal çek bırak yapıyor ama serial monirde sayma işleminde sıkıntı var
bu benim kodu birebir kopyaladınız dimi ?
çünkü bakıyorum bakıyorum, öyle sayması imkansız daha önce kullandığım algoritma
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.
süslü paantezlerin if else yapısının önemi büyük
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
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ı
tekrar güncelledim yukarıdaki kodu
bide böyle deneyin
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.
bidaha deneyin tekrar güncelledim
https://www.youtube.com/watch?v=iUAmJ0XmzGE
son kodu uygulayıp çektim hocam
arduino editördeki kodunuzu komple bi kopyalayıp yapıştırırmısınız
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 */ } }
tekrar güncelledim
button buton olmalı yanlış yazmışım
tek t
bende sonradan farkettim aynı şekil değişen birşey yok malesef
imkansız valla, pin değiştirin bide voltajda da sorun olabilir
komple rölesiz deneyin, röle voltajı indiriyor olabilir
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
rica ederim, hep beraber memlekete fayda sağlıyoruz
eyvallah saygılar