İ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);
}
}
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)
}
}
....