Clase 28 - Cómo Se Conecta Un Pulsador
Clase 28 - Cómo Se Conecta Un Pulsador
Clase 28 - Cómo Se Conecta Un Pulsador
CON TINKERCAD
Clase 28: ¿Cómo se conecta
un pulsador?
Vimos como leer un sensor que proporcione una señal digital con dos
niveles de tensión LOW y HIGH. Nos quedó pendiente aprovechar las entradas
digitales para leer el estado de un interruptor o pulsador con Arduino,
Conexión directa
Nuestra primera idea para leer un pulsador podría ser conectar
directamente un PIN digital de Arduino a un valor de tensión de referencia, ya
sea este 0V o 5V. Al cerrar el pulsador la tensión en el PIN sería el valor de
referencia (0V o 5V depende del montaje) y podríamos realizar la lectura como
en cualquier entrada digital.
¿Cuál es el problema?
Bueno, esto funcionará cuando el interruptor está cerrado. Pero, ¿Qué pasa
cuando el interruptor está abierto? En este caso estamos dejando el PIN
totalmente desconectado de cualquier tensión, algo que denominaremos
estado de alta impedancia. la entrada está en un estado indeterminado, es
decir, que puede asumir cualquier valor y el Arduino funcionará de forma
inesperada, afectando la continuidad del programa. Por tanto, es necesario
evitar esta situación en nuestros diseños.
Doble conexión
Lo siguiente que podríamos pensar es conectar el PIN a dos referencias de
tensión, alternadas en función del estado del interruptor:
Resistencia de Pull-Up
Cuando configuramos una entrada digital con una resistencia de Pull-Up,
estamos asegurando, que en todo momento vamos a tener una señal ALTA
hasta el momento en el que se produzca una pulsación del interruptor, en este
momento la entrada digital quedará conectada directamente a masa, o lo que
es lo mismo, a un nivel de tensión 0.
Resistencia de Pull-Down
Su funcionamiento es idéntico al de las resistencias de Pull-Up, pero
invirtiendo la lógica, esta configuración asegurará un nivel lógico de 0 voltios
hasta que sea pulsado el pulsador.
Circuito Propuesto
• 1 Arduino uno
• 1 Resistencia de 10 KΩ
• 2 Diodos Leds color rojo, y verde
• 2 Resistencias 330Ω
• 1 Protoboard
• 2 Pulsadores
Solución de la Programación
void setup()
{
pinMode(led_rojo, OUTPUT);
pinMode(led_verde, OUTPUT); // Asignación de puertos como entrada/salida
pinMode(ent_pulsador, INPUT_PULLUP); //Se utiliza la resistencia
pinMode(ent_pullDown, INPUT); // interna de Pull_Up
}
void loop()
{
lectura = digitalRead(ent_pulsador); //Se lee el estado del pulsador
lectura_pull = digitalRead(ent_pullDown); //Se lee el estado del pulsador/resistencia
digitalWrite(led_rojo, lectura); //Se escribe en el puerto 3 el estado de la
//la lectura del pulsador
digitalWrite(led_verde, lectura_pull); ////Se escribe en el puerto 4 el estado de
//la lectura del pulsador/resistencia de
//Pull-Up