Selamlar. Aynı anda 2 adet butona basarak bir ledi yakmak istiyorum. Aynı anda 2 adet butona basılı iken 12 nolu pine bağlı sensörden tetikleme gelirse ilk başta yanan ledin sönüp diğer ledin yanması gerekiyor.
Karşılaştığım sorun butonlara aynı anda bastığımda istediğim gibi birinci led yanıyor, Ancak aynı anda butonlara basılıyken sensör tetiklenirse tüm ledler yanıyor. Benim istediğim ise ilk başta yanan ledin sönüp diğerinin yanması. Bu hatayı nasıl düzeltebilirim?
else if (digitalRead(BaslaButon1) == HIGH || digitalRead(BaslaButon2) == HIGH) //Burada hata yok { digitalWrite(YukariLed, LOW); digitalWrite(AsagiLed, LOW); }
Buradaki yaptığınız hata şu, örneğin; 2 tane if komutu var birtanesi if(x>10){} diğer if ise if(x>20){}
şimdi size soruyorum eğer x=100 ise hangi if e girer ?
tabikide ikisinede girer. sizin hatanız o birinci ifte 2 butonada basılırsa gir diyorsunuz 1ci led yanıyor 2 ci led sönüyor ikinci ifte 2 butonada basılırsa ve sensör gelirse gir diyorsunuz 1ci led sonüyor 2 ci led yanıyor.
Siz butonların ikisinide basınca ve sensorden de bilgi gelince hem 1 ci ife giriyor, hemde 2 ci ife giriyor.
yani işlem şu oluyor 1.led yan, 2.ed sön, 1.led sön, 2.led yan,
bir işlem süresi uS(mikro saniye) mertebesinde olduğu için siz bunu bütün ledler yanıyormuş gibi görüyorsunuz, çözüm ise şöyle ;
birinci if in içerisine sensöre bağımlı biir komut koymalısın. Bunu deneyebilirsin;
BUNU simdi 2 inci bir buton ekledigimde 2 inci butona bastıgımda 1 inci butondaki ledin sönmesini ve 2 inci butondaki ledin yanık kalmasını istiyorum. nasıl yapabilrim bi fikir verirmisiniz