Lliurament 4.- 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.
Mònitor sèrie. La pantalla d'Arduino
Per enviar un missatge d'entrada des de la placa Arduino a l’ordinador, necessitaràs tres ordres diferents: Serial.begin(), Serial.println() o Serial.print().
Ja ho hem vist al lliurament 1, però ara repassem les comandes perque ens familiaritzem.
Puja el codi de sota a la teva placa i fes clic a Eines -> Monitor Serial a l’IDE de l’Arduino.
|
1
2
3
4
5
6
7
8
|
void setup() {Serial.begin(9600);}void loop() {Serial.println("Hola Caracola");delay(1000);} |
Veuràs una petita finestra amb el text “Hola Caracola” que apareix una vegada per segon. Aquesta finestra mostra tot el que s’envia al teu ordinador a través del port serial de l’Arduino.
Les ordres utilitzades a dalt són:
Serial.begin(velocitat): Inicia la comunicació serial. Velocitat correspon a la rapidesa amb què els missatges són transmesos. És important que tant l’emissor (en aquest cas la placa Arduino) com el receptor (en aquest cas el monitor serial) es comuniquin a la mateixa velocitat. En cas contrari seria com si dues persones s’intentessin comunicar l’una en xinès i l’altra en català. Per ara, utilitza 9600 bits/segon(bps). Aquesta és la velocitat més habitual quan es treballa amb Arduino i Processing.Serial.println(missatge): Mostra un missatge a través del port serial, amb un salt de línia al final, de manera que cada vegada que cridis a la funcióSerial.println(), el missatge següent s’iniciarà en una nova línia. Elmissatgeés la cadena de text (tipusString) que vols enviar.Serial.print(missatge): Mostra un missatge a través del port serial. Cada vegada que cridis aSerial.print(), el següent missatge apareixerà just després, sense nova línia. Novament, elmissatgeés la cadena de text que vols enviar.
CÓDIGO EN ARDUINO
Ara veureu com utilitzar el monitor sèrie, la icona de dalt de dreta:
|
int pin = 2;
int value = 0;
void setup() {
Serial.begin(9600); //iniciar puerto serie
pinMode(pin, INPUT); //definir pin como entrada
}
void loop(){
value = digitalRead(pin); //lectura digital de pin
//mandar mensaje a puerto serie en función del valor leido
if (value == HIGH) {
Serial.println("Encendido");
}
else {
Serial.println("Apagado");
}
delay(1000);
}
|
Quin tipus de muntatge has de fer segons el codi, Pull-up o pull-down? Contesta-li al professor.
PRÀCTICA A LLIURAR:
Fes que s'engegui i s'apagui un led amb un pulsador. Comença a pensar tu, ajudant-te de pràctiques anteriors. En cas de no sortint-te'n, ajuda't d'Internet.
Lliura l'enllaç del vídeo penjat a la carpeta compartida de Tecnologia, i esciu a la tramesa el codi que has utilitzat amb la teva explicació.
Resum de la qualificació
| Ocult per a l'estudiantat | Sí |
|---|---|
| Participants | 19 |
| S'han tramès | 0 |
| Necessiten qualificació | 0 |
| Temps restant | 1 any 1 dia |