G004 El pulsador como interruptor

Descripción                                                                                                                       ADM
Este circuito veremos cómo convertir un simple pulsador, en un interruptor. Es decir una vez que pulsemos el botón, no será necesario mantener pulsado este para que el LED permanezca encendido, sino que con solo pulsar y soltar el LED permanecerá encendido, y cuando volvamos a pulsar y soltar el LED permanecerá apagado. También veremos como evitar los efectos de rebote típico de la electrónica digital, debido a la alta velocidad de la corriente eléctrica. 

Componentes
Para este circuito vamos a necesitar:
1 diodo LED
1 resistencia 330
1 pulsador normalmente abierto

Esquema

Se conecta directamente el pulsador al pin 10 y su salida al GND. El LED se conecta su ánodo al pin 6 y su cátodo a la resistencia limitadora R1 y esta a GND. No se conecta una resistencia pull-up R2, porque vamos utilizar una resistencia pull up internan que contiene la placa de Arduino de 20K, con lo que ahorraremos cableado y un componente.  Para usar esta resistencia usaremos la palabra reservada input_pullup en el código fuente.




Montaje

Siguiendo el esquema hemos realizado este montaje. Si tienes problemas para identificar las patillas del pulsador usa el multímetro.





















Código
int LED = 6;                              
int boton = 10;                          
bool estado = false;                      
bool estado_anterior = true;      
void setup() {
  pinMode(LED, OUTPUT);                  
  pinMode(boton, INPUT_PULLUP);          
  digitalWrite(LED, LOW);                
}
void loop() {
  estado = digitalRead (boton);          
  delay(50);                                
  if( estado != estado_anterior){          
    if( estado == false){      
      digitalWrite(LED, !digitalRead(LED));
    }                    
  }
  estado_anterior = estado;      
}
Básicamente se pulsa el pulsador hasta que se enciende el LED y luego se pulsa el pulsador hasta que se apaga el LED, no hay rebotes, y no hay falsa pulsaciones. Lo que no se puede hacer es una pulsación rápida, es imperativo pulsar hasta que se encienda o apague el LED.

Repaso del código
Se crean 4 variables para guardar los pines y los estados, Luego se establece el pin 6 de salida y 10 de entrada conectada a la resistencia pull-up interna de arduino y se establece el LED apagado al inicio.  FInalmente el Loop empieza leyendo si el pulsador está pulsado o no, espera 0,05 segundos, si no hay diferencia entre el estado actual y el anterior, no hace nada y si el estado anterior es diferente del estado actual, entonces comprueba si el estado actual es falso, eso significa que se está pulsando el botón y mira cómo está el LED y lo pone al contrario de lo que esta, si está encendido lo apaga y si esta apagado lo enciende. finalmente guarda el nuevo estado en el estado anterior.