Truco del Pulsador con variable Auxiliar

Cuando hacemos nuestro primer ejemplo con pulsador con if, nos damos cuenta de que solo se mantiene prendido si lo mantengo presionado. Obviamente de ese ejemplo nos surge la duda de como hacer que el led quede prendido con el mismo pulsador y que volviéndolo a pulsar se apague.

La solución para lograr esto lo que vamos a hacer utilizando una variable y entonces cada vez que pulso el pulsador…esta variable cambio su estado indicando que fue presionado antes o no.

Veamos como se hace.

Que necesitamos para hacerlo?

1-Software Necesario

 

El ide (entorno de programacion) del Arduino descargado e Instalado

Chequear siempre antes de cargar cualquier código de arduino a la placa, que este bien seleccionado la Placa que estemos utilizando y el Puerto al cual esta conectada la misma.

 

2-Componentes Electrónicos

 

 

 

1 – Arduino Uno o cualquier otro tipo de Arduino que disponga de los pines hembra soldados.

 

 

 

1 -Cable USB para conectar el Arduino a la PC

 

 

 

 

1-Protoboard ya sea de 400 puntos o de 830 puntos

 

 

 

 

 

1-Pulsador o tambien conocido como touch switch. Suelen venir de 4 o 2 patas.

 

 

5- Cables macho macho para la conexión de los elementos de la protoboard con el arduino.

 

 

 

 

 

1-Led rojo para indicar la acción de que el pulsador fue pulsado o no.

 

1-Resistencia de 220OHms para el led-

 

 

1-Resistencia de 10k para el pull-up del pulsador

 

 

Esquema de conexión eléctrica

 

Les dejo también el esquema y la diferencia entre el pull-down y el  pull-up que estamos usando en este esquemático.

El primero también se conoce como lógica positiva, ya que cada vez que pulso al pulsador equivale a un HIGH o “1” y si lo suelto es un cero.

En cambio el pull-up es exactamente lo contrario.

Código de Programación

/*
El objetivo de este código es prender y que quede prendido  el led 
una vez pulsado, y después volviendo a pulsar que lo apague
*/
const  int  led = 2;            //defino pines de los leds
const  int  pulsador=3;
int auxiliar=0;                    // auxiliar= cero -> led apagado
                                           //auxiliar =1 -> led prendido

//función setup para entradas y salidas
void setup()
{
   pinMode(led, OUTPUT);       //defino led como salida
   pinMode(pulsador,INPUT);    //defino pulsador como entrada
}

//esta es la funcion loop principal que se repite
void loop() 
{
    if(digitalRead(pulsador)==HIGH) 
      {
          delay(50);                  //tiempo de antirebote
          while(digitalRead(pulsador)==HIGH)
           ;                   //pierdo tiempo hasta que el pulsador sea soltado

         if(auxiliar==0)       //chequeo si auxiliar vale 0
               auxiliar=1;
         else                       //caso contrario vale 1
                 auxiliar=0;  
       }
 if(auxiliar==1)              //si auxiliary vale 1 prendo led
  {                
        digitalWrite(led, HIGH);
  }
  else		           //caso contrario vale cero y apago led
   {                                  
        digitalWrite(led,LOW);
   }
}

Desafíos adicionales

 

1)Cuando pulso que titile, y cuando vuelvo a pulsar que apague

2)Hacer que con 1er pulsado se prenda, 2do titile y 3ero apague.