Problema con Pulsadores como interruptores

Hola!

Una question, estoy haciendo un interruptor con un pulsador, de manera que cuando se pulsa por priemra vez enciende el Led, y cuando se vuelve a pulsar se desactiva.

Mi problema es el propio repeat del programa, ya que si mantego pulsado el pulsador el led se enciende y se apaga intermitentemente.

Sabeis como, a nivel de codigo, puedo solucionar este problema??

El codigo utilizado hasta el momento:

void loop() {

value = digitalRead(inPin);

if (value !=HIGH)
{
delay(200);
veces++;
}

if (veces==1)
digitalWrite (ledPin,HIGH);
if(veces==2)
{
digitalWrite (ledPin,LOW);
veces=0;
}
}//Fin programa

Muchas gracias por vuestro tiempo!!! ;D

Precisamente este es uno de los primeros tutoriales. Te recomiendo hacerlos, son muy instructivos...

En esencia, tu código lo que hace es cambiar entre veces = 0 y veces = 1 si el pulsador está pulsado (pq no usas un boolean?), en realidad has de comprobar si
a) el valor anterior era 0 (es decir, si hemos pulsado "de nuevas")
b) si ha pasado el tiempo necesario (aunque esto ya lo controlas introduciendo el delay a mano, sería mejor comprobarlo con el millis en lugar de bloquear el micro.

En general, soy bastante contrario a los delays, porque no me permiten hacer mas cosas con el micro. Además, imagínate que en lugar de un LED, quieres controlar un servo... por cada pulsacion, lo haces avanzar 1 grado ¡metiendo ese delay impides enviarle los pulsos de control!

Suerte con tus diseños! :smiley:

No he testeado el codigo, pero creo que lo que necesitas es lo que sigue:

(en la funcion setup, debes inicializar la variable salida=LOW

void loop() {

value = digitalRead(inPin);

if (value ==HIGH)
salida=!salida;

digitalWrite (ledPin,salida);

}//Fin programa

Fijate que la linea que hace salida=!salida es la responsable de cambiar el estado del led cada vez.

Que grandes k sois!!

tienes toda la razon…los delays no son una buena opcion, sobretodo pk tb tengo que trabajar con servos.

Suerte de gente como vosotros!!! Aun soy pupilo de esto del mundo de arduino pero poco a poco intentare aportar lo que sea necesario!

Muchas gracias!! ;D