Prácticas Módulo 7-segmentos

Título de la práctica: | Número de la suerte |
Objetivo: | El alumno codificará un programa en Arduino que visualice una variable contador y una variable acumulador en un display de 7 segmentos controlado por 4 botones pulsadores. |
Tiempo estimado: | 100 minutos |
Nivel de dificultad: | Intermedio |
Introducción
¿Conoces los juegos de números? Son juegos que generalmente se utilizan para enseñar a los niños a contar y sumar, uno de esos juegos es calcular el número de la suerte.
El número de la suerte consiste en sumar los dígitos de nuestra fecha de nacimiento. Si al sumar los dígitos obtenemos un número de dos cifras, se suman nuevamente los dígitos hasta obtener una cifra de un dígito (entre el 1 y el 9) que corresponde al número de la suerte. ¿Que te parece si utilizamos el display de 7 segmentos y programamos el juego del número de la suerte ? ¿Cuál es tu número de la suerte?
En esta práctica se programa el display de 7 segmentos utilizando dos tipos de variables:
- Una variable contador que muestra el aumento o disminución de su valor.
- Una variable acumulador que permite ir acumulando la suma de cada dígito de la fecha de nacimiento. .
Materiales





Programas
Arduino IDE. Disponible en: https://www.arduino.cc/en/software
Desarrollo
Vamos a iniciar analizando qué se debe hacer para resolver el problema. El juego del número de la suerte comienza con una fecha de nacimiento como se muestra a continuación:

Procedimiento:
- Se tiene la fecha 15 de octubre de 1999, tomamos en cuenta cada dígito de la fecha y lo convertimos en una suma: 1+5+1+0+1+9+9+9 = 35
- Cómo el resultado es un número de dos cifras, repetimos el proceso de la suma para obtener un valor de un dígito: 3 + 5=8
- La suma final nos muestra el número de la suerte: 8
Para la creación del juego del número de la suerte se utilizará el módulo 7 segmentos conectado a la tarjeta Arduino. El funcionamiento de los botones del módulo de 7 segmentos para recrear el juego es el siguiente
Figura 2. Funcionamiento de botones del Display 7 segmentos.
De acuerdo a la siguiente información podemos identificar las entradas, los procesos y las salidas del programa los cuales se muestran en la Tabla 1.
Entrada | Procesos | Salida |
---|---|---|
Dígito de la fecha de nacimiento | Aumentar una variable contador | Número de la suerte |
Estado del botón presionado | Disminuir una variable contador | |
Mostrar variable contador en el display | ||
Validar variable contador | ||
Sumar cada dígito a una variable acumulador | ||
Validar si el número de la suerte es mayor de 2 dígitos | ||
Descomponer en dígitos el número de la suerte y sumarlos | ||
Mostrar el número de la suerte en el display |
Para realizar la práctica, si no se cuenta con el Módulo de 7 segmentos, puedes realizar el circuito que se muestra a continuación que corresponde a la práctica del número de la suerte:

De acuerdo al circuito electrónico, los segmentos del display están conectador a un pin de la placa Arduino, para visualizar un número en el display es necesario indicar el segmento que se debe encender (HIGH). Por lo tanto, se debe manejar el número del pin y su estado (HIGH o 1) valores que es más fácil manipular si se almacenan en arreglos y se declaran como valores constantes. Si no estás familiarizado con el manejo de arreglos, te sugerimos realizar primero la práctica Arreglos bidimensionales del Manual de Programación con Arduino).
Declaración del arreglo PINES
Los pines del Arduino que están enlazados a cada segmento del display son 6, 7, 8, 9, 10, 11 y 12 (Figura 3). Para manipularlos vamos a almacenarlos en un arreglo unidimensional de enteros. Realiza el ejercicio 1 que te apoyará en la declaración el arreglo PINES. Puedes apoyarte del circuito electrónico (Figura 3).
Ejercicio 1. Declaración del arreglo PINES
Declaración del arreglo DIGITOS
Los dígitos que encienden cada segmento del display de 7 segmentos y que formarán cada uno de los números del 0 al 9 se pueden almacenar en un arreglo bidimensional llamado DIGITOS de tipo byte con una longitud de [10] [8]. La siguiente tabla muestra la configuración de los segmentos para cada número del 1 al 9 .

Realiza el siguiente ejercicio para apoyarte en la declaración del arreglo DIGITOS.
Ejercicio 2. Declaración del arreglo DIGITOS
Declaración de variables
De acuerdo a la tabla 1, requerimos identificar cada dato que se utiliza en la programación, ya sean datos de entrada, de proceso o de salida. A continuación te proponemos el identificador de variable y el tipo de dato y la utilidad de las variables que utiliza el programa número de la suerte.
Variable | Tipo de dato | Función |
col | entero | Permite llevar el índice de las columnas de los arreglos PINES y DIGITOS |
valBtn0 | entero | Guarda el estado del botón B0 |
valBtn1 | entero | Guarda el estado del botón B1 |
valBtn2 | entero | Guarda el estado del botón B2 |
valBtn3 | entero | Guarda el estado del botón B3 |
vContador | entero | Número desplegado en el display y almacén temporal del dígito seleccionado |
numSuerte | entero | Guarda el cálculo del número de la suerte |
numero | entero | Guarda el número de la suerte de 2 cifras |
Tabla2. Variables de práctica número de la suerte
Ahora resuelve el ejercicio para codificar las variables.
Ejercicio 3. Declaración de variables
Configuración de los pines de conexión del display 7 segmentos
Vamos a configurar el modo de comportamiento de los pines del display que se encuentran almacenados en el arreglo PINES[]. Responde las siguientes preguntas que te orientarán para codificar las instrucciones de Arduino correspondientes.
Ejercicio 4. Configuración de los pines de conexión del display de 7 segmentos/
Activación y configuración del pin del transistor NPN.
El transistor NPN es el componente que permite activar o desactivar el display de 7 segmentos. Para su uso configuramos el pin al cual está conectado el transistor como una salida y posteriormente activar el display. De acuerdo a la Figura 3, ¿cuál es la respuesta correcta?
Ejercicio 4.1, 4.2 y 4.3 Activación y configuración del pin del transistor NPN.
Configuración de los pines de conexión de los botones pulsadores
Para utilizar un botón pulsador debemos configurar el pin de la tarjeta Arduino al que está conectado en modo entrada. Vamos a configurar los botones pulsadores (B0, B1, B2, B3), recuerda que por default, un botón pulsador tiene el valor 0 (LOW) y cuando es presionado cambia su valor por 1 (HIGH). Revisa el diagrama del circuito (Figura 3) para identificar a que pin esta conectado cada botón y resuelve el ejercicio:
Ejercicio 5. Configuración de los pines de conexión de los botones pulsadores
Lectura del estado de cada botón pulsador.
A continuación, vamos a programar las instrucciones para realizar la lectura del estado de cada botón. Para la lectura vamos a utilizar las variables valBtn0, valBtn1, valBtn2 y valBtn3 que se declararon con el propósito de guardar el estado del botón. Cada botón esta conectado a un pin que configuraste como entrada (ejercicio 5) y cuyo valor será almacenado en la variable valBtn#. Realiza el ejercicio para apoyarte a codificar las instrucciones:
Ejercicio 6. Lectura del estado de un botón
Comparación del estado de un botón
Ahora que ya tenemos la lectura del estado de cada botón podemos determinar cuál de los cuatro botones cambio a estado HIGH. Recuerda que el estado del botón pulsador es LOW (0), y solo si se presiona el botón pulsador su estado cambia a HIGH (1). Para saber qué botón cambio de estado realizamos una comparación entre el valor de la variable valBtn# y el valor HIGH.
Ejercicio 7. Comparación del estado del botón .
Conociendo el estado de cada botón, podemos codificar las acciones que cada uno debe realizar. Vuelve a revisar la figura 2 para recordar las acciones de cada botón, te percatarás que algunos comparten los mismos procesos. Los procesos de los botones pulsadores son:
Incremento decremento de la variable contador
Un contador es una variable de tipo entero que se utiliza para llevar la cuenta de las veces que ocurre un suceso. Tanto el botón B1 y B2 utilizan la variable vContador que aumenta o disminuye su valor dependiendo el valor que se requiere desplegar en el display. En el siguiente ejercicio se codifica la variable contador para aumentar o disminuir un número.
Ejercicio 8. Incremento/decremento de la variable contador
Validar e inicializar la variable contador
Una vez codificado el incremento o decremento, es necesario verificar que la variable vContador incremente hasta el número 9 como máximo o que disminuya hasta el 0 como valor mínimo. Un valor mayor a 9 o menor que 0 no se puede visualizar en el display de 7 segmento.
Realiza el siguiente ejercicio para codificar las instrucciones que permitan validar e inicializar la variable contador a 0 si se cumple lo siguiente:
- Que en el display se muestre el número 9 y se siga presionando el botón de aumento (B02).
- Que en el display se muestre el número 0 y se siga presionando el botón de decremento (B1).
Ejercicio 9. Validar e inicializar la variable contador
Visualización de la variable contador
Muy bien, ya codificamos las instrucciones de la sentencia if then en caso de que la variable vContador exceda los límites de 9 o 0 ¿Qué pasa si no se cumple la condición? entonces se debe codificar las instrucciones de la sentencia else que consiste en visualizar la variable vContador en el display de 7 segmentos Para la visualización, vamos a utilizar los dos arreglos que declaramos cómo contantes, el arreglo DIGITOS y el arreglo PINES. Revisa la siguiente figura que te ayudará a recordar su configuración y la relación que guardan con el display de 7 segmentos:

Observa bien cómo el valor de la variable vContador es igual al índice de la fila del arreglo DIGITOS (la configuración de los segmentos del display que se deben encender) por lo que es necesario realizar un recorrido por la fila correspondiente:
Ejercicio 10. Recorrido de la fila del arreglo DIGITOS
Ya codificamos la estructura for para hacer el recorrido por filas del arreglo DIGITOS, ahora falta codificar la instrucción que indica el pin (almacenados en el arreglo PINES) conectado al segmento a encender del display para visualizar el número de la variable vContador
Ejercicio 11. Encendido de los segmentos display
Muy bien, ya codificaste las instrucciones de la sentencia else del ejercicio 8.
Generación de la variable acumulador
Una vez que se muestre en el display un dígito de la fecha de nacimiento que se requiere considerar para calcular el número de la suerte, se presiona el botón B3 para sumar cada dígito y calcular el número de la suerte. Para este proceso utilizamos una variable acumulador que es una variable que va cambiando su valor sumando distintas cantidades y guardando el total. Una variable acumulador tiene las siguientes características
- Se inicializa a un valor inicial: a 0 si es una suma o a 1 si es un producto.
- Se acumula un valor intermedio (Puede ser en aumento o en disminución).
En el ejercicio 3 se hizo la declaración de la variable acumulador numSuerte y se inicializó con valor en 0, ahora veamos cómo se codifica:
La sintaxis de una variable acumulador es la siguiente:
varAcumulador=varAcumulador+num;
Parámetros
varAcumulador – variable que acumula diferentes cantidades.
num – cantidad que se le suma o se le resta.
Tomando en cuenta la sintaxis, vamos a considerar que la variable acumulador puede tanto aumentar su valor (como el caso del número de la suerte) como disminuir (cuando disminuyes una deuda por un pago).
Para la práctica se requiere que cada vez que se presione el botón B3, se sume el número que se muestra en el display (vContador) a la variable acumulador (numSuerte). La instrucción que se requiere es la siguiente:
numSuerte = numSuerte + vContador;
Validación de la variable acumulador
El número de la suerte es un valor de un dígito, por lo que es necesario validar que la variable numSuerte cumpla con esta condición. Cuando la suma total de los dígitos de la fecha de nacimiento es un número de 2 cifras o más (un número mayor a 9) es necesario repetir el proceso de sumar los dígitos hasta que el resultado sea un número de un dígito.
Ejercicio 12. Validar variable numSuerte
Simplificar a un dígito el número de la suerte
Cuando el número de la suerte es un valor superior a 9, debemos sumar nuevamente cada dígito hasta que el número de la suerte sea una cifra de un dígito. ¿Qué proceso puede auxiliar a descomponer un número en dígitos para sumarlos nuevamente?. Revisa la siguiente imagen que te puede dar una idea del proceso a realizar:

¿Qué operación matemática nos muestra la imagen? ¡Así es!, una división nos permitirá obtener cada uno de los dígitos y después sumarlos. Lee con atención el procedimiento:
- Guardamos el valor de numSuerte en una variable auxiliar.
- Inicializamos la variable numSUerte a 0
- Dividimos el valor de la variable auxiliar entre 10 y el resultado lo acumulamos a numSuerte
- Dividimos el valor de la variable auxiliar entre 10 y el residuo lo acumulamos a numSuerte
Se realiza todo el procedimiento hasta que numSuerte sea un valor de un dígito.
Ahora que ya conocemos el proceso para obtener los dígitos de un número, contesta el ejercicio 12 que te ayudará a codificar las instrucciones:
Ejercicio 13. Simplificar a un dígito el número de la suerte.
Visualización de la variable numSuerte en el display
Revisa nuevamente la figura 6, ¿A qué número esta señalando la etiqueta de la variable numSuerte?, Así es, al índice de las columnas del arreglo DIGITOS. ¿Recuerdas cómo codificaste la visualización de la variable vContador?, pues el procedimiento es muy similar
Para visualizar el número de la suerte en el display realizamos también un recorrido por la fila del arreglo DIGITOS (ejercicio 12) modificando sólo un poco la instrucción para el encendido de los segmentos del display. Realiza el ejercicio para la codificación:
Ejercicio 14. Encendido del número de la suerte
Codificación del programa de Arduino
Muy bien, ahora ya podemos codificar todo el programa y escribir en la función setup las instrucciones de configuración de los pines de la tarjeta Arduino, la inicialización o activación de los dispositivos y en la función loop el código que se ejecutará de manera repetitiva mientras la tarjeta Arduino permanezca encendida.
Para la codificación de las instrucciones de cada botón, te recomendamos consultar la siguiente imagen que te ayudará a comprender la lógica de las instrucciones de cada botón.
Es el momento de unir todas las instrucciones de Arduino que hemos identificado para la solución del problema en un solo programa. Para ello, sustituye el texto << bloque de instrucciones Ejercicio n >> con las instrucciones que codificaste en el ejercicio de la práctica indicado.
/* Práctica número de la suerte
* Programa que calcula un número de la suerte
* y lo muestra en el display de 7 segmentos
//Declaración e inicialización del arreglo unidimensional PINES
<< bloque de instrucciones ejercicio 1 >>
//Declaración e inicialización del arreglo bidimensional DIGITOS
<< bloque de instrucciones ejercicio 2 >>
// declaración de las variables utilizadas en el programa
<< bloque de instrucciones ejercicio 3 >>
void setup() {
// Configuración de los pines de conexión del arreglo PINES como salida
<< bloque de instrucciones ejercicio 4 >>
// Configuración de pines de conexión de los botones pulsadores
<< bloque de instrucciones ejercicio 5 >>
//Configuración del pin de conexión del transistor de salida
<<bloque de instrucciones Ejercicio 4.2>>
//Activación del display de 7 segmentos
<<bloque de instrucciones Ejercicio 4.3>>
}
void loop() {
// Lectura del estado de cada botón pulsador
<< bloque de instrucciones ejercicio 6 >>
//Código Botón0
// Comparación del estado del botón0
<< bloque de instrucciones ejercicio 7 >> {
//Ciclo para validar que numSuerte no excede 2 dígitos
<< bloque de instrucciones ejercicio 13 >> {
} // fin ciclo while
// Ciclo para recorrer las columnas del arreglo DIGITOS[][]
<<bloque de instrucciones ejercicio 10>>
// Encendido de los segmentos del display con valores[numSuerte][columna]
<<bloque de instrucciones ejercicio 14>>
delay (500);
numSuerte = 0;
} // Fin Botón0
// Codificación botón1
// Comparación del estado del botón1
<< bloque de instrucciones ejercicio 7 >> {
//Decremento variable contador
<< bloque de instrucciones ejercicio 8 >>
//Validación e inicialización de la variable contador
<< bloque de instrucciones ejercicio 9 >>
else {
// Ciclo para recorrer las columnas del arreglo DIGITOS[][]
<<bloque de instrucciones ejercicio 10>>
// Encendido de los segmentos del display con valores[vContador][columna]
<<bloque de instrucciones ejercicio 11>>
}
delay (500);
} // Fin Botón1
// Codificación botón2
// Comparación del estado del botón2
<< bloque de instrucciones ejercicio 7 >> {
//Incremento de la variable contador
<< bloque de instrucciones ejercicio 8 >>
//Validación e inicialización de la variable contador
<< bloque de instrucciones ejercicio 9 >>
else {
// Ciclo para recorrer las columnas del arreglo DIGITOS[][]
<<bloque de instrucciones ejercicio 10>>
// Encendido de los segmentos del display con valores[vContador][columna]
<<bloque de instrucciones ejercicio 11>>
}
delay (500);
} // Fin Botón2
//Codificación Boton3
// Comparación del estado del botón3
<< bloque de instrucciones ejercicio 7 >> {
numSuerte = numSuerte + vContador;
delay (200);
} // Fin Botón3
Captura, compila y ejecuta tu programa. Para ello, realiza las siguientes acciones:
- Abre el IDE de Arduino.
- Crea un nuevo sketch.
- Captura las instrucciones del programa.
- Guarda tu programa.
- Compila tu programa. En caso necesario, depúralo hasta que no tenga ningún error.
- Conecta la tarjeta Arduino a tu computadora.
- Selecciona el puerto serial (COM) de la computadora asociado a la tarjeta.
- Sube el programa a la memoria de la tarjeta Arduino UNO.
- Ejecuta tu programa.
Resultados
Vamos a analizar los resultados de tu programa. Para ello, vamos a dar las siguientes fechas:
No. de prueba | Fecha de nacimiento | Dígitos a insertar | Número de la suerte |
1 | 15/septiembre/1810 | 1+5+9+1+8+1+0 | |
2 | 20/noviembre/1910 | 2+0+1+1+1+9+1+0 | |
2 | 14/febrero/2021 | 1+4+2+2+0+2+1 |
Recuerda entre fecha y presionar el botón de reinicio de la tarjeta Arduino UNO para detener el programa que actualmente se está ejecutando y lo ejecute nuevamente desde su inicio.
Agrega una nueva fila a la tabla y proporciona tu fecha de nacimiento. ¿Cuál es tu número de la suerte?
Conclusiones
Un acumulador es una variable de tipo entero o real que que va sumándose así misma cierta cantidad. Son muchas las aplicaciones que pueden tener las variables acumuladores, se utiliza principalmente en el cálculo de series matemáticas, en la vida cotidiana como la creación de un ticket de compra entre otros tipos de problemas.
Con el concepto de contador y acumulador en mente, responder a las preguntas siguientes:
- Es posible programar diferentes variables acumulador o contador en un programa para diferentes acciones?
- ¿Puede una variable acumulador restar valores a sí misma? Justifica tu respuesta
- ¿Qué otras aplicaciones de la vida cotidiana se puede utilizar una variable acumulador?
- Indica ¿qué conocimientos aprendiste con esta práctica?
Reto Arduino
Modifica el programa del número de la suerte para que en lugar de sumar los dígitos de cada fecha de nacimiento, los multiplique.
Referencias
Arduino. (2021). Language Reference. https://www.arduino.cc/reference/en/
CACJ(s/f) Contadores y acumuladores. El proceso de la programación. http://www3.uacj.mx/CGTI/CDTE/JPM/Documents/IIT/repetitivas/contadores.html
Bañuelos, M., Pacheco, M. y Villegas, R. (2021). Módulo 7-segmentos. Manual de Usuario.