2 buton ile sayi arttirma?

comely54

Yeni üye
Katılım
8 Eyl 2019
Mesajlar
6
Tepkime puanı
0
Puanları
1
Konum
sakarya
Merhaba.2 buton ile ayrı ayrı sayı değeri arttırmak istiyorum.Ama sorun yaşıyorum.2 adet buton ile tıklama sayısını saymam gerekiyor ancak 2 buton devreye girince sayma yapamadim.1. Butona basınca 1 oluyor ayni butona 2.kez basınca saymıyor diğer butona basip tekrar diğeri ne basınca sayım devam ediyor. Yani illaki butonlara sırayla basınca sayıyor bunu nasıl duzeltebilirim?

Kodum;
const int buton = 2;
const int buton2 = 3;
int sayac = 0;
int sayac2 = 0;
int butonDurumu = 0;
int buton2Durumu =0;
void setup() {
pinMode(buton, INPUT);
pinMode(butonn, INPUT);
Serial.begin(9600); }
void loop() {
butonDurumu = digitalRead(buton);
if (butonDurumu == HIGH) {
delay(10);
sayac ++;
Serial.print("Butona ");
Serial.print(sayac);
Serial.println(". defa basildi."); while(butonDurumu == HIGH){
butonDurumu = digitalRead(buton);
}
delay(10);
}

buton2Durumu = digitalRead(buton2);
if (buton2Durumu == HIGH) {
delay(10);
sayac2 ++;
Serial.print("Butona ");
Serial.print(sayac2);
Serial.println(". defa basildi."); while(buton2Durumu == HIGH){
buton2Durumu = digitalRead(buton2);
}
delay(10);
}
 

alio1984

Üye
Katılım
9 Ağu 2019
Mesajlar
43
Tepkime puanı
1
Puanları
8
Konum
istanbul
Merhaba.2 buton ile ayrı ayrı sayı değeri arttırmak istiyorum.Ama sorun yaşıyorum.2 adet buton ile tıklama sayısını saymam gerekiyor ancak 2 buton devreye girince sayma yapamadim.1. Butona basınca 1 oluyor ayni butona 2.kez basınca saymıyor diğer butona basip tekrar diğeri ne basınca sayım devam ediyor. Yani illaki butonlara sırayla basınca sayıyor bunu nasıl duzeltebilirim?

Kodum;
const int buton = 2;
const int buton2 = 3;
int sayac = 0;
int sayac2 = 0;
int butonDurumu = 0;
int buton2Durumu =0;
void setup() {
pinMode(buton, INPUT);
pinMode(butonn, INPUT); // pinMode(buton2, INPUT);
Serial.begin(9600); }
void loop() {
butonDurumu = digitalRead(buton);
if (butonDurumu == HIGH) {
delay(10);
sayac ++;
Serial.print("Butona ");
Serial.print(sayac);
Serial.println(". defa basildi."); while(butonDurumu == HIGH){
butonDurumu = digitalRead(buton);
}
delay(10);
}

buton2Durumu = digitalRead(buton2);
if (buton2Durumu == HIGH) {
delay(10);
sayac2 ++;
Serial.print("Butona ");
Serial.print(sayac2);
Serial.println(". defa basildi."); while(buton2Durumu == HIGH){
buton2Durumu = digitalRead(buton2);
}
delay(10);
}
} loop kapattık.

Programın çalışması gerekli. yukarıda ufak bir düzeltme yaptım.

Teşekkürler,
Ali
 

comely54

Yeni üye
Katılım
8 Eyl 2019
Mesajlar
6
Tepkime puanı
0
Puanları
1
Konum
sakarya
pinMode(buton2, INPUT); bu düzeltmeyi yapmıştım malesef ayni ya.
 

alio1984

Üye
Katılım
9 Ağu 2019
Mesajlar
43
Tepkime puanı
1
Puanları
8
Konum
istanbul
const int buton = 2;
const int buton2 = 3;
int sayac = 0;
int sayac2 = 0;
int butonDurumu = 0;
int buton2Durumu =0;
void setup()
{
pinMode(buton, INPUT);
pinMode(buton2, INPUT);
Serial.begin(9600);
}

void loop()
{
butonDurumu = digitalRead(buton);
if (butonDurumu == HIGH)
{
sayac ++;
Serial.print("Butona ");
Serial.print(sayac);
Serial.println(". defa basildi.");
while(butonDurumu == HIGH)
{
butonDurumu = digitalRead(buton);
}
}

buton2Durumu = digitalRead(buton2);
if (buton2Durumu == HIGH)
{
sayac2 ++;
Serial.print("Butona ");
Serial.print(sayac2);
Serial.println(". defa basildi.");
while(buton2Durumu == HIGH)
{
buton2Durumu = digitalRead(buton2);
}
}

} // Loop sonu.

Kardeşim çalışır bu kod, hata görünmüyor şu işaretlere dikkat et { }. Loop döngü sonuna ekledim. Ayrıca butonları nasıl kullanıyorsun 10K 'lık pull down direnci eklemeyi de unutma.

Teşekkürler,
Ali
 

comely54

Yeni üye
Katılım
8 Eyl 2019
Mesajlar
6
Tepkime puanı
0
Puanları
1
Konum
sakarya
Yazım hatası yok derleme yapıyor sıkıntı gözükmüyor. Zaten alt tarafı silince mesela tek buton ile basarak sayiyor hicbir sıkıntı yok. Ama ikisi birleşince illa 1. Butona basınca sonra 2. Butona basmayınca 1. Buton saymıyor.sırayla basınca sayiyor yani anlamadım bende 11K pull Down kullanıyorum.
 

alio1984

Üye
Katılım
9 Ağu 2019
Mesajlar
43
Tepkime puanı
1
Puanları
8
Konum
istanbul
Tekrar kontrol et, devreni. 1 ve 2. buton birbirinden bağımsız çalışıyor. Butonların belki takılı kalıyordur. döngüden çıkamıyor tekrar basınca düzeliyor vs. vs. Başaracaksın :)
 

comely54

Yeni üye
Katılım
8 Eyl 2019
Mesajlar
6
Tepkime puanı
0
Puanları
1
Konum
sakarya
Buton sıçraması için devrede Schimit triger kullaniyordum onu çıkardım sorun düzeldi sayaçları saydırabiliyorum şuan. Şöyle bir sorunum var kesme ile yapınca bunu halletmiştim ama sayaç 1 iken 5 sn içinde 2. Kez sinyal gelirse led yanacak. 5sn içinde sinyal gelmezse sayaç sıfırlayacak. Sayaç 1 iken if döngüsüne girdiği zaman sayacı artıramıyorum illa if döngüsünün bitmesini beklemem gerekiyor bunu nasıl çözerim.
 

comely54

Yeni üye
Katılım
8 Eyl 2019
Mesajlar
6
Tepkime puanı
0
Puanları
1
Konum
sakarya
Program şöyle olacak ;
2 buton olacak.1. Butona 2.kez basınca led1 yanacak 5sn boyunca1. butona basılmaz ise led1 sönecek.5 sn içinde 1. Butona 3. kez basılırsa led1 sönecek.2. Butona 2.kez basınca led2 yanacak 5sn boyunca2. butona basılmaz ise led2 sönecek.5 sn içinde 2. Butona 3. kez basılırsa led2 sönecek.
 

alio1984

Üye
Katılım
9 Ağu 2019
Mesajlar
43
Tepkime puanı
1
Puanları
8
Konum
istanbul
Buton basımını kontrol için kullandığın if döngüsüne 1 sayaç daha ekle bu değer her döngüye girişte artsın. led döngüsünün koşulunuda bu sayaç belirlesin. zamanlamaya daha sonra bakarız. Parça parça yapmayı dene.

if buton == high
{
say++;
if (say ==2)
{
led aktif;
}
}
 

comely54

Yeni üye
Katılım
8 Eyl 2019
Mesajlar
6
Tepkime puanı
0
Puanları
1
Konum
sakarya
void ac()
{
sayac++;
delay(500);
Serial.print("Sayac'a");
Serial.print(sayac2);
Serial.println(" defa basildi.");
}
Bu kesme fonksiyonunu 1 kere işlem yapsın şeklinde nasıl bir kod ekleyebiliriz. While ile yada benzeri birşey 1 kere basınca 3 e atlıyor direk.
 

alio1984

Üye
Katılım
9 Ağu 2019
Mesajlar
43
Tepkime puanı
1
Puanları
8
Konum
istanbul
durum kontrolü ile yapabilirsin, delay ile yapabilirsin. ihtiyacana göre basılı tuttuğunda çalışmasını istiyorsan delay ekle, sadece 1 kere basınca 1 artsın diyorsan durum kontrolü yap.

digitalRead(buton);
if ( buton==HIGH )
{
digitalRead(buton);

if (buton==LOW)
{
sayac++;
Serial.print("Sayac'a");
Serial.print(sayac2);
Serial.println(" defa basildi.");
}
}
 
Üst