Lliurament 2b.- El pulsador com a entrada digital
¿QUÉ ES UNA ENTRADA DIGITAL?
Una señal digital es una variación de voltaje entre -Vcc a +Vcc sin pasar por los valores intermedios. Por lo tanto, una señal digital dispone solo de dos estados. Al valor inferior de tensión -Vcc le asociamos un valor lógico LOW o '0', mientras que al valor superior +Vcc le asociamos HIGH o '1' lógico.
Sin embargo en el mundo físico las referencias de tensión realmente son continuas. El proceso de lectura digital es un proceso de discretización de una señal analógica, el valor de la tensión, en un valor digital que representamos mediante dos estados, LOW y HIGH.
En realidad una entrada digital realiza una comparación de la medición con un valor de tensión umbral. Si el valor medido es superior a la tensión umbral se devuelve HIGH, y si es inferior LOW. El valor de la tensión umbral varía de un autómata a otro, e incluso no tiene porque permanecer constante a lo largo del tiempo.
En general es razonable suponer que la tensión umbral es cercana al punto medio entre -Vcc y +Vcc. No obstante debemos evitar medir tensiones cerca de la tensión umbral porque pueden provocar mediciones incorrectas.
CONEXIÓN DE ENTRADAS DIGITALES EN ARDUINO
En Arduino las entradas y salidas digitales comparten pin, motivo por el que se denominan I/O digitales. Esto significa que el mismo pin puede ejecutar funciones tanto de entrada como de salida aunque, lógicamente, no de forma simultánea. Es necesario configurar un pin I/O como entrada o salida en el código.
En Arduino los valores de alimentación habituales son 0V y 5V. En este caso la tensión umbral será muy cercana a 2'5V. Por tanto si medimos una tensión con un valor intermedio entre 0 a 2'5V Arduino devolverá una lectura LOW, y si medimos un valor entre 2'5V y 5V, devolvera HIGH.
Supongamos que queremos emplear Arduino para conectarlo con un sensor, o cualquier otro dispositivo, que dispone de una salida de tensión ininterrumpida entre 0V a 5V. De momento no consideramos la posibilidad de que la entrada digital quede totalmente desconectada, algo que trataremos en la siguiente entrada "Lectura de un pulsador con Arduino".
Podemos realizar la lectura del valor de tensión en el sensor con un esquema como el siguiente.

La lectura dará un valor "HIGH" si el valor de tensión medido es superior a una tensión umbral, y "LOW" si el valor de tensión es inferior.
LEER UN PULSADOR
- Para medir un valor LOW al accionar el interruptor, podemos conectar el PIN de forma fija a 5V, y a 0V a través del interruptor. Con el interruptor abierto leeríamos HIGH, y al cerrar el interruptor se forzaría 0V en el PIN, por lo que leeríamos LOW.
- Para medir un valor HIGH al accionar el interruptor, podemos conectar el PIN de forma fija a 0V, y a 5V a través del interruptor. Con el interruptor abierto leeríamos LOW, y al cerrar el interruptor se forzaría 5V en el PIN, por lo que leeríamos HIGH.

¿Cuál es el problema de este montaje? Pues que al pulsar el interruptor estamos conectando directamente los valores de 0V y 5V, lo que significa que estamos causando un cortocircuito. Esto provocaría el paso de un elevado de corriente y un rápido calentamiento de componentes y conductores.
¿Cómo evitar este cortocircuito? Bueno, estamos cerca. Esto lo veremos a continuación en el montaje definitivo.
MONTAJE CORRECTO, RESISTENCIAS DE PULL-DOWN O PULL-UP
Como habíamos adelantado, para resolver el montaje correctamente necesitaremos la presencia de dos nuevas amigas, las resistencias de Pull Down y Pull Up. Estas dos resistencias son un mecanismo básico, muy habitual dentro del mundo de la electrónica y automatización.

Las resistencias de Pull-Down y Pull-Up se conectan entre el PIN digital y una de las tensiones de referencia (0V o 5V) y "fuerzan" (de ahí su nombre) el valor de la tensión a LOW o HIGH, respectivamente.
- La resistencia de Pull-Up fuerza HIGH cuando el pulsador está abierto. Cuando está cerrado el PIN se pone a LOW, la intensidad que circula se ve limitada por esta resistencia
- La resistencia de Pull-Down fuerza LOW cuando el pulsador está abierto. Cuando está cerrado el PIN se pone a HIGH, y la intensidad que circula se ve limitada por esta resistencia
Así es como quedaría el montaje final en vista esquemática (la conexión de puede realizar en empleando cualquiera de los PIN digital).

Y así el cableado en una placa de prototipos.

¿QUÉ VALOR DE RESISTENCIA ELEGIR?
El valor de la resistencia viene condicionado por la intensidad que pasa al accionar el interruptor, y por un concepto llamado la “autoridad del Pull Down/up” que está relacionado con el ruido en la medición.
- Una resistencia muy pequeña, tendrá mucha autoridad, pero permitirá el paso de una mayor corriente, lo que supone mayor consumo y mayor calentamiento.
- Una resistencia muy grande, dejará pasar poca corriente, pero tendrá poca autoridad, por lo que será más susceptible a mediciones incorrectas debidas a ruido.
FEM LA PRÀCTICA
Ara veureu com utilitzar el monitor sèrie, la icona de dalt de dreta AMB UN PULSADOR. Agafareu un pulsador amb els tres cables ja connectats (no tenim pulsadors petits). Recordeu que el cable blanc és el digital, el que va al pin digital. El negre el Gnd, i el vermell el positiu, 5V:
int pin = 2; // Pin del polsador
int value=0;
void setup() {
Serial.begin(9600); // Inicia la comunicació
pinMode(Pin, INPUT); // Configura el pin del polsador com entrada digital
}
void loop() {
value=digitalRead(pin); // defineix el pin com entrada
if (value == HIGH) { // Si el polsador está pressionat
Serial.println("engegat"); // Mostra "engegat" en el monitor serial
}
else {
Serial.println("apagat"); // Mostra "apagat" en el monitor serial
}
delay(1000);
}
PRÀCTICA A LLIURAR:
Fes que s'engegui i s'apagui un led amb un polsador. Comença a pensar tu, ajudant-te de pràctiques anteriors. Enviar el codi a la tramesa quan ho hagis aconseguit.
Resum de la qualificació
| Ocult per a l'estudiantat | Sí |
|---|---|
| Participants | 19 |
| S'han tramès | 18 |
| Necessiten qualificació | 18 |
| Temps restant | 15 dies 14 hores |