Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: veliusta - 31 Mayıs 2014, 03:36:10

Başlık: Arduino Toggle Buton ve Led
Gönderen: veliusta - 31 Mayıs 2014, 03:36:10
İnternetteki bulduğum kodları denedim ama stabil olanını bulamadım.

Koşullar.

Buton 50ms 'den fazla basılı tutursa ve Bırakılanca (KeyUP) LED Toggle Yapsan. (1 kez)

Örnek:
if(BUTONa 50ms den fazla BASILDI)
{
if(BUTONu cektidiginde islem yap "keyup" )
{
if(LED == HIGH)
{
digitalWrite(LED, LOW);
}
  else
{
digitalWrite(LED, HIGH);
}
}
}


Nasıl yapabilirim?

40 adet buton koyarsam 40x40 = 1600ms beklemeyeceğim kod nasıl yazılır?



const int BUTON = 2;
const int LED = 13;

void setup(){
  pinMode(BUTON, INPUT);
  pinMode(LED, OUTPUT);
}

void loop(){
if (digitalRead(BUTON) == HIGH)
    {
      digitalWrite(LED, HIGH);
    }
else
    {
      digitalWrite(LED, LOW);
    }
}
Başlık: Ynt: Arduino Toggle Buton ve Led
Gönderen: Klein - 31 Mayıs 2014, 04:09:32
Basitçe şöyle yapabilirsin.
Kodlar temsili. Optimize bir kod değil. ama kafanı karıştırmamak için daha optimize yöntemler önermeyeceğim. 
4 butonun olduğunu varsayalım.

usigned char timeout[10]
if(button1 == DOWN)
{
    if(timeout[0] >0) timeout[0] = timeout[0] - 1;
}else{
   if(timeout[0] < 50) timeout[0] = timeout[0] + 1;
   if(timeout[0] == 1) 
   {
        led_toggle(led_1)
   }
}

if(button2 == DOWN)
{
    if(timeout[1] >0) timeout[1] = timeout[1] - 1;
}else{
   if(timeout[1] < 50) timeout[1] = timeout[1] + 1;
   if(timeout[1] == 1) 
   {
        led_toggle(led2)
   }
}

....