ardunio da birden fazla buton var buttonPinden hangi tuşa basıldığını nasıl anlayacağım?

+2 oy
19 Nisan 2015 onur Stajyer (560 puan)   sordu
4 tane buton var yaptığı işlem bi kronometreyi çaliştiyor. Bir tanesine basında diğerleri işlevsiz olacak ama seçim kişiye bağlı.
kodu da burada.
http://pastebin.com/bRtfdSXq
teşekkürler:

2 Cevap

+1 oy
19 Nisan 2015 karatemelli Stajyer (800 puan)   cevapladı
İşlevsiz olacak'dan kastın ne anlamadım. Butonların pin girişlerini INPUT yaptığın için her değişiminde Arduino algılayacak. Aşağıda hangi butona basıldığını ekrana yazan kod yazdım belki faydası olur.

 

#include <LiquidCrystal.h>

int buton1=6;

int buton2=7;

int buton3=8;

int buton4=9;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

setup(){

  pinMode(buton1,INPUT);

  pinMode(buton2,INPUT);

  pinMode(buton3,INPUT);

  pinMode(buton4,INPUT);

lcd.begin;

}

loop(){

lcd.setCursor(0,0);

if(digital.Read(button1)==HIGH){

   lcd.print("buton1");

}

else if(digital.Read(button2)==HIGH){

   lcd.print("buton2");

}

else if(digital.Read(button3)==HIGH){

   lcd.print("buton3");

}

else if(digital.Read(button4)==HIGH){

   lcd.print("buton4");

}

}
19 Nisan 2015 onur Stajyer (560 puan)   yorumladı
disable olacak.
+1 oy
19 Nisan 2015 karatemelli Stajyer (800 puan)   cevapladı

Söylediğine göre ikinci bir seçim olmayacak. Disable durumu arduino içerisinde yok.  Herhangi bir pinden gelen sinyal sonrası bir daha buton kontrolü yapmazsın. Disable olmuş olur.

#include <LiquidCrystal.h>
int buton1=6;
int buton2=7;
int buton3=8;
int buton4=9;
int 
aktif=0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

setup(){
  pinMode(buton1,INPUT);
  pinMode(buton2,INPUT);
  pinMode(buton3,INPUT);
  pinMode(buton4,INPUT);
  lcd.begin;
}

loop(){

lcd.setCursor(0,0);
if(aktif==0){

   if(digital.Read(button1)==HIGH) aktif=1;
   else if(digital.Read(button2)==HIGH)  aktif=2;
   else if(digital.Read(button3)==HIGH)  aktif=3; 
   else if(digital.Read(button4)==HIGH) aktif=4;

}

else{

     if(aktif==1) lcd.print("buton1");
     else if(aktif==2) lcd.print(
"buton2");
     else if(aktif==3) lcd.print("buton3");  
     else if(aktif==4) lcd.print("buton4");

}

}

19 Nisan 2015 onur Stajyer (560 puan)   yorumladı
bu kodda hiç bir değişken etken yok sürekli buton1 yazıyor yazması da normal çünkü if'i görünce else if e girmiyor.
...