Objetivos
Material requerido.
Arduino Uno o compatible y con el firmware para S4A cargado. | |
Una Protoboard más cables. | |
Un diodo LED | |
Cuatro resistencia de 330 Ohmios. |
|
Un pulsador. |
LAS ENTRADAS DIGITALES DE ARDUINO
Con frecuencia en electrónica necesitamos saber si una luz está encendida o apagada, si alguien ha pulsado un botón o si una puerta ha quedado abierta o está cerrada.
A este tipo de señales todo/nada, SI/NO, TRUE /FALSE, 0/1 se les llama digitales o Booleanas.
Muchos de los sensores y actuadores que vemos en el mundo real son digitales:
En esta sesión vamos a leer un botón o pulsador externo (entrada digital) y vamos a encender o apagar un LED (salida digital) en función de que el pulsador esté presionado o no.
ESQUEMA ELÉCTRICO DEL CIRCUITO
Este circuito es un poco más complicado que los que hemos visto hasta ahora. El montaje del LED será el mismo que en las sesiones anteriores. En este caso lo conectaremos a la salida digital 10.
Por primera vez vamos a utilizar el pin de 5V de nuestra placa Arduino. A diferencia de las salidas digitales, que pueden dar HIGH o LOW, este pin siempre dará HIGH.
Conectaremos el pulsador S1 al pin de 5V, y cerraremos el circuito conectando la otra parte del pulsador a la entrada digital 2 y a GND a través de una resistencia.
De esta forma cuando el pulsador se cierra obtenemos 5V, HIGH, en la entrada digital 2. Si está abierto obtenemos 0V, LOW. Y entonces, ¿para qué sirve la resistencia R1?
Si leemos el valor de una entrada digital que no tiene nada conectado veremos cómo en ocasiones los valores en la entrada fluctúan. Para evitarlo podemos conectar una resistencia PULLDOWN o PULLUP. Una resistencia de PULLDOWN lo que hace es garantizar que cuando el botón no está pulsado, se lea siempre LOW, es decir, fija la tensión a 0V. Por el contrario, una resistencia de PULLUP garantiza que el valor leído es HIGH, por tanto 5V.
Nosotros hemos realizado el montaje con la resistencia en PULLDOWN. Mientras no presionemos el pulsador, permanecerá abierto, o sea que no dejará que circule la corriente a la otra parte. De esta manera lo que tenemos es el pin 2 conectado a GND a través de la resistencia R1, de modo que leerá LOW.
Al cerrarlo lo que hacemos es cerrar el circuito del pin 2 a 5V, con lo que leerá HIGH.
El montaje en la protoboard sería el siguiente:
APRENDIENDO A LEER EL PULSADOR
Para leer el pulsador utilizaremos usar un nuevo bloque de “Control” “si … / si no”.
El comportamiento de este bloque es el siguiente:
Lo primero que haremos será crear la condición. Para ello utilizaremos los bloques de la categoría “Operadores”. Como en este caso lo que queremos es crear una condición que compruebe el valor de una señal digital usaremos el bloque de “Operadores” “… = …”. Lo seleccionamos y lo arrastramos hasta el hueco en forma de hexágono.
Para terminar de crear la condición tenemos que decidir qué es lo que queremos comparar. En este caso lo que queremos saber es si la entrada digital 2 está leyendo HIGH o LOW. El bloque para leer entradas digitales está en la categoría “Movimiento”.
Aunque en este bloque parece que lo que comparamos es si está presionado, eso dependerá del circuito. Sería mejor que lo interpretáramos simplemente como “valor sensor digital …”; y ver qué valor realmente está recibiendo esa entrada digital.
Si hemos entendido esto último, deberíamos tener más o menos claro que lo que queremos conseguir con este bloque es algo así:
Pasándolo a bloques nos quedaría la siguiente estructura:
Podéis descargar el programa completo desde aquí: Pulsador. Ya sólo nos queda dar a la bandera verde y probar si funciona correctamente.
En la lista de valores del escenario podemos ver el estado de las entradas en cualquier momento, tanto analógicas como digitales. En este caso estamos utilizando la entrada digital 2.
Para practicar, os recomiendo que montéis el circuito con la resistencia en PULLUP y modifiquéis el programa para que se adapte al nuevo circuito.
Resumen de la sesión
En esta sesión hemos aprendido varias cosas importantes: