Display de 7 segmentos.

Para empezar vamos a escoger un display de ánado común (esta práctica también la puedes hacer con cátodo común, para ello en vez de conectar el positivo al común tendrás que conectar el negativo). Como ya has aprendido en la anterior teoría, a cada diodo interno le corresponde un puerto y los diodos están nombrados según una nomenclatura de letras de la A a la G.

Aunque Arduino tiene 13 puertos, está claro que que no nos hace falta usar los 13 puertos porque solo necesitamos utilizar 8 puertos para representar todos los números del 0 al 9 y algunas letras (sin contar el signo). Si quisieramos usar más displays y evitar la sobrecarga de puertos, podríamos hacer uso de la multiplexión, que verás en el curso de electrónica avanzada de esta misma Web.

En realidad solo utilizaré 7 de los puertos de Arduino UNO para generar números y letras y para no liarme empezaré conectando los puertos del display a sus puertos relativos de Arduino.

conexión de los puertos a los puertos Arduino

La relación de puertos es la siguiente:

Puerto 1 del display puerto 1 de Arduino.
● Puerto 2 del display Puerto 2 de Arduino.
Puerto 4 del display Puerto 4 del Arduino.
Puerto 6 del display Puerto 6 del Arduino.
Puerto 7 del display Puerto 7 del Arduino.
Puerto 9 del display Puerto 9 del Arduino.
Puerto 10 del display Puerto 10 del Arduino.

Abre un nuevo Sketch de Arduino y lo primero que tienes que hacer es, como tienes 7 puertos, declararlos. Así en una primera aplicación por el camino lento, declararemos siete variables para cada puerto a usar de la forma que ves en pantalla.

declaración de 7 variables para los puertos

Estas variables estan declaradas de forma global fuera del Setup, para que el programa pueda acceder a ellas.

Ahora dentro del Setup tenemos que establecer la configuración de los puertos de manera que los declararemos como salidas para que se puedan alimentar los diodos led del display. Eso lo haremos con la instrucción pinMode(puerto, estado); como ya hemos hecho otras veces. Así que por cada puerto establecemos una configuración.

Activa el puerto en setup

Y ahora que estan los puertos configurados como salida, si quiero que se enciendan todos los puertos, necesito una instrucción en el Loop para hacer que se active el código del Setup, es decir que se enciendan los Led (esto es así porque para que se ejecute el primer bloque de Setup, hace falta una instancia en el bloque Loop, es decir un catalizador que inicialice el Setup). Así poniendo basicamente un delay de 1 segundo, se encenderán todos los led como ves en la imagen.

funcionamiento

Pero podrías ponerle una cadena vacia para el monitor de la forma Serial.print("");, o cualquier otra instrucción que lanzara la ejecución del Setup.

Creación de números con Arduino.

Ahora que ya tenemos declarado los puertos y asignados como salidas, recuerda que si en el Loop selecciono un puerto específico, ese puerto pasará directamente a LOW, y por lo tanto se apagará. Así si quiero representar el número 5, tengo que tener activos los Leds A, F, G, C y D y los puertos B y E deben de estar apagados. Por ello, en el Loop hago un llamamiento a estos puertos con digitalWrite para apagarlos.

Mostrar el número 5 con Arduino mostrar el número 5

Fijate que si establezco los puertos 6 y 1 en LOW, se encenderán todos los led del display y eso ocurre porque en el Loop se lleva la acción contraria del estado del puerto, y por eso lo declaro como HIGH en lugar de LOW.

Si estableces a LOW los puertos, estos se activan en el loop

Entonces ya te has dado cuenta de que para mostrar un número en cuestión hay que activar (desactivar) los puertos en cuestión. Así pues, si queremos mostrar el número 3 habrá que activar los Leds A, B, C, D y G, y desactivar los Leds E y F que corresponden a los puertos 1 y 9.

Número 3

¿Pero entonces como podemos mostrar los números en una serie de repeticiones? Pues creándolos dentro de varios procesos, por ejemplo para mostrar repetidamente el número 1 y 2 alternativamente tendríamos que crear dos procesos nuevos en los cuales en cada proceso escribiriamos el código para mostrar dichos números. Y después lo llamaríamos desde el Loop. Así creamos un proceso nuevo llamado uno() en el cual establecemos el código para mostrar el número 1.

proceso uno que muestra el número uno

Y después el proceso dos(), siguiente:

proceso para cargar el número dos

Y después en el Loop lo referenciamos de la forma uno();dos(); para que se cargue dicho contenido en el bucle.

Fijate que he establecido con digitalWrite los puertos que no quiero que se enciendan para que se muestren los otros puertos y me enseñe el número 1. Despues he realizado una pausa con Delay(2000); para que el cambio entre números no se distorsione y pueda verse. Es necesario activar otra vez los puertos y dejarlos como estaban en el Setup(), por eso vuelvo a poner los puertos en LOW en dicho proceso después de la pausa.

Con el proceso dos he realizado lo mismo, he utilizado los dos puertos que quiero que de apagan para así mostrar el número dos. Le ha asignado un delay de 2 segundos y después he vuelto a poner los puertos como estaban para que no afecte al Loop del programa.

Así podríamos crear secuencias de números del 0 al 9 o incluso palabras completas como un saludo "HOLA" que realizaríamos igual que en los números pero esta vez con letras, como hice en este vídeo de aquí.

Pero eso lo veremos en el siguiente capítulo en el cual vamos a iteraccionar con el código. Hasta ahora hemos escrito las instrucciones en procesos y en declarado las variables. Para el proximo capítulo aprenderás a usar bucles for para recorrer los pines del arduino UNO y que se enciendan los Leds del display en una secuencia programada.

Espero que te haya servido de algo y hayas aprendido algo nuevo. Ahora visita el vídeo de la práctica para complementar tu formación.