Telerruptor en arduino?

Buenas e realizado este programa en arduino e puesto este programa la pega es que en vez de dar al pulsador 8 se encienda y se quede encendido y cuando se pulse de nuevo el pulsador que esta en la entrada 8 se apague y se quede apagado pero... funciona asi pulsas esta unos segundo haciendo intermitencia y logo se queda apagado y no lo entiendo porque hace eso si no e metido ningun blink... y quitando el delay que me recomendaron para el rebote hace lo mismo. Alguien me puede aportar algo??


Aqui el programa en cuestion:


Código:
int Pin_pulsador = 8;           // Numero del pin en el que se conecta el pulsador al arduino
int Pin_led = 13;                 // Numero del pin en el que se conecta la salida del led ( o lo que se quiera conectar) al arduino
boolean Telerruptor = false; // Declaramos la variable del telerrupto y la ponemos en fase al arranque del arduino


void setup()
{
 pinMode(Pin_pulsador,INPUT); // Declaramos la variable Pin_pulsador como entrada del arduino
 pinMode(Pin_led,OUTPUT);      // Declaramos la variable Pin_led como salida del arduino
}

void loop()
{
 if (digitalRead(Pin_pulsador) == HIGH) // comprobamos si se acciona el pulsador
     {
       Telerruptor=!Telerruptor;               // Invertimos la salida del telerruptos desde la ultima pulsacion
       digitalWrite(Pin_led,Telerruptor);   // Escribimos en la salida
       delay(100);                                  //Realizamos una pausa para evitar los rebotes de la pulsacion
     }
}

Y luego un semaforo bueno 2 uno con diodos rojos amarillo intermitente y verde y otro relacionado al anterior solo con verde y rojo para los peatones.... en este ya si que ando mas perdidillo dado que no domino mucho los case en arduino que es como tengo pensao hacerlo
 
Última edición:
Primero, normal que te haga un blink, fijate que tu le estas diciendo que si el estado del pin del pulsador es alto que invierta su salida (date cuenta que ese bucle a lo largo de un segundo se ejecuta un buen puñado de veces, es la unica condición, tu mientras estás pulsando esa condición se cumple, por lo cual te parpadea, una solución es un retardo largo, por ejemplo de 1 segundo, pero si pulsas el interruptor por mas de 1 segundo pasará lo mismo, otra solución es usar banderas...
Y segundo, yo para invertir la salida no haría esa cosa tan fea, existe la función pin_toggle que invierte el estado de esa salida sea cual sea, es una tontería pero es más elegante :LOL:
 
para contrarestar el rebote esta bien el "delay(100)", a mi me ha funcionado exactamente esto que haces,
no se porque a ti te da falla.

intenta contrarestar el rebote externamente con un capacitor.
 
Atrás
Arriba