Buton ile Led Kontrolü Yardım

micbeatz

Üye
Katılım
5 May 2020
Mesajlar
12
Puanları
1
Yaş
28
Merhabalar arkadaşlar.Ben ikinci butona bir kez bastığımda, birinci butona ne kadar basılmışsa o kadar kez yanan led yapmak istiyorum.Bunun programını nasıl yazabilirim açıkcası çözemedim.Yardımcı olursanız şimdiden teşekkürler
 
const int buton_1 = 2;
const int buton_2 = 3; /*Buton 1 tıklama sayacı için, buton 2 ledi çalıştırmak için*/
const int led = 4;
int sayac = 0; /* butona basılma sayısını tutacak değişken */
int butonDurumu_1 = 0;
int butonDurumu_2 = 0; /*Buton durumları atamak için gerekli değişkenler*/

void setup() {
pinMode(buton_1, INPUT);
pinMode(buton_2, INPUT);
pinMode(led, OUTPUT);

}

void loop() {
butonDurumu_1 = digitalRead(buton_1);
butonDurumu_2 = digitalRead(buton_2); /*Gelen verileri değişkenlere aktaralım*/
if (butonDurumu_1 == HIGH) { /*Eğer sayaç butonuna baasılırsa aşağıdaki kod dizisini uygular*/
delay(10); /* dalgalanmalar için biraz bekleyelim */
sayac ++; /* sayaç = sayaç + 1 yani sayaç değeri bir arttırıldı */
while(butonDurumu_1 == HIGH){ /* Butona basili olduğu surece bekle */
butonDurumu_1 = digitalRead(buton_1); /* Butonun durumunu kontrol et */
}
delay(10); /* dalgalanmalar için biraz bekleyelim */
}
if (butonDurumu_2 == HIGH) { /*Led butonuna basılırsa aşağıdaki kod dizisini uygular*/
for(int x=0; x<sayac; x++){ /*X değişkeni oluşturup for döngüsü ile sayaçtan gelen tıklama sayısı kadar kod dizisini döndüren koşullu değişken */
digitalWrite(led,HIGH);
delay(300);
digitalWrite(led,LOW);
delay(300); /*Ledi yakıp söndüren kod dizisi*/
}
}

}
Kodu kendim yazdım fakat bazı yerlerini https://gelecegiyazanlar.turkcell.com.tr/konu/arduino/egitim/arduino-201/tiklama-sayaci sayesinde yazdım.
Eğer istersen Seri haberleşme üzerinden tıklama sayısını gösterebilirsin. Tek yapman gereken if komutu içerisinde yer alan sayac++; komutundan sonra
Serial.print("Butona ");
Serial.print(sayac);
Serial.println(". defa basildi.");
yazmalısın. Sıfırlamak için arduinodaki tekrar başlama butonuna bas. Umarım yardımcı olabilmişimdir.
 
Debonce durumu bu şekilde olmaz.
Butona basıldıktan sonra, bekleme
zamanı içinde bırakılmış olabilir veya
tam temas olmamış olabilir. Bekleme
zamanından sonra tekrar kontrol etmek
gerekir.

Kod:
if(buton == 1)
{
    delay(10);//butona basıldıktan sonra bekliyoruz,
    if(buton == 1)// buton bekleme zamanından sonra hala basılı mı?
    {
        //işlemler...
    }
}
 
bu konularda yeniyim daha bir bilgim yok fakat denediğimde herhangi bir sıkıntı ile karşılaşmadım.
 
herkese yardımları için teşekkürler

Burda bir sonraki bastığım buton sayısını da ekliyor yani ben ilk butona 5 kez basıp 2. ye bir kez bastığımda 5 kez led yanıp sönüyor.Buraya kadar problem yok.Fakat tekrar birinci butona 2 kez basıp, ikinci butona bastığımızda sayacı sıfırlamadığımız için 7 kez ledi yakıp söndürüyor.Yani şunu dememiz lazım x<sayac şartını sağladığında sayacı sıfırla.Bunu nasıl yapabilriz?
 

For döngüsü parantezi kapandıktan sonra sayac=0; yazarak düzeltebilirsin
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…