Contador de vidas

Prácticas Módulo 7-segmentos

Título de la práctica:Contador de vidas
Objetivo:El alumno codificará un programa en Arduino que visualice un contador en un display de 7 segmentos controlado por 2 botones pulsadores.
Tiempo estimado:50 minutos
Nivel de dificultad:Intermedio

Materiales

Programas

Arduino IDE. Disponible en: https://www.arduino.cc/en/software

Introducción

Los videojuegos utilizan una barra de vida o contador de energía para mostrar cuántas vidas llevas. Si ganas puntos aumenta una vida, si te pegan o te lastiman, pierdes una vida.  Te has preguntado, ¿cómo es que la barra de vida aumenta o disminuye? Para que las barras de vida funcionen utilizan un contador,  que es una variable que lleva la cuenta del número de veces que se ha cumplido una condición. 

De acuerdo al número de vidas es el tamaño de la barra de vidas, la cual puede aumentar su tamaño o disminuir  de acuerdo al valor de la variable contador.  Esta variable puede incrementar o disminuir.  En esta práctica, programarás un display de 7 segmentos que muestre el aumento o disminución de una variable contador de acuerdo a una condición.

Desarrollo

Primero, vamos a analizar cómo funciona la variable contador con el uso del Módulo de 7 segmentos. Al inicio, el display mostrará el número 0 que es el valor de inicio de la variable contador. Cada vez que presionas el botón B2 del Módulo de 7 segmentos, la variable contador aumentará su valor en 1 y lo mostrará en el display. Cuando presiones el botón B1, el valor de la variable disminuirá en 1 y el display volverá a desplegar el valor actual. Cuando el valor de la variable llegué al valor máximo que es el número 9, el contador reiniciará en 0. Si el contador disminuye hasta llegar a el valor 0, se mantendrá en ese valor.

Figura 1. Práctica contador de vidas

Si no cuentas con el Módulo de 7 segmentos, puedes realizar el circuito que se muestra a continuación que corresponde a la práctica del contador:

Figura 2. Circuito práctica contador

Declaración del arreglo PINES 

Para el desarrollo de esta práctica primero se van a definir las constantes que se van a utilizar. Utilizaremos un arreglo unidimensional que  corresponde a los pines del Arduino que están enlazados a cada segmento del display (6, 7, 8, 9, 10, 11, 12, 13). Es un arreglo de enteros de 8 elementos llamado PINES.

Responde las siguientes preguntas que te ayudarán a declarar el arreglo PINES. Puedes ayudarte con la Figura 2 del circuito electrónico. 

Ejercicio 1. Declaración del arreglo PINES

Declaración del arreglo DIGITOS 

Para la visualización de los números del contador, se utilizará un arreglo bidimensional llamado DIGITOS de tipo byte con una longitud de [10] [8] que contendrá 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. Te puedes apoyar con la Figura 3 que muestra la tabla de valores por segmento para el display. 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. 

Ejercicio 2. Declaración del arreglo DIGITOS

Responde las las siguientes preguntas que te ayudarán  a identificar los elementos necesarios para declarar el arreglo:

Figura 3. Tabla de valores por segmento para el display

Ya declarados los arreglos PINES y DIGITOS, vamos a declarar las variables que se van a utilizar en el desarrollo de la práctica, revisa la siguiente tabla que te muestra las variables a utilizar:

VariableTipo de datoComentarios
colentero// Permite llevar el índice de las columnas de los arreglos PINES y DIGITOS
valBtn1entero 
// Guardamos el estado del botón B1
valBtn2entero// Guardamos el estado del botón B2
vContadorentero// Almacenar el valor que se despliega en el display

Tabla 1. variables. dela práctica contador de vidas

Ejercicio 3. Declaración de las variables 

Configuración de los pines de conexión 

Ahora vamos a configurar los pines que se van a utilizar, primero configuramos los pines del arreglo PINES. Recuerda las instrucciones que se utilizan para configurar resolviendo el siguiente ejercicio:

Ejercicio 4. Configuración de los pines de conexión del display de 7 segmentos 

Ya tenemos configurados como salida (OUTPUT)  los pines del display 7 segmentos, procedamos a realizar la identificación y configuración de los pines que utilizan los botones pulsadores.

Configuración de los  pines de conexión de los botones pulsadores

El Módulo 7 segmentos cuenta con 4 botones pulsadores (B0, B1, B2, B3).  Funcionan como un sensor digital y  pueden  enviar a la tarjeta Arduino el valor HIGH (1) si está presionado y el valor LOW (0) si no está presionado. Para utilizar un botón debemos configurar el pin al que está conectado en modo entrada.

Revisa en la Figura 2 los pines de la tarjeta Arduino a los que están conectados los botones B1 y B2 que se utilizan en la práctica y resuelve el siguiente ejercicio:

Nota:  Aunque no aparece en el circuito,  el Botón B0 está conectado al pin 1 y el botón B3 al pin 4 

Ejercicio 5. Identificación y conexión de los pines de conexión de los botones pulsadores

La última configuración corresponde al  pin del transistor NPN.

El transistor NPN  es el componente que  permite activar o desactivar el display de 7 segmentos. Vamos a codificar las instrucciones para configurar el pin al cual está conectado el transistor para que se comporte como una salida y posteriormente activar el display. Observa la Figura 2 y responde las siguientes preguntas:

Ejercicio 6. Activación del display de 7 segmentos

Lectura de los valores de un botón pulsador

Una vez configurado el botón pulsador, debemos codificar las instrucciones para  leer nuestra entrada digital del botón. El resultado de la lectura se almacenará en una variable (valBtn) que permitirá después validar el estado del botón. Si el botón pulsador es presionado su valor cambia a el estado HIGH (pulsado, 1), si el pulsador no es presionado está en LOW (0).

Ejercicio 7. Lectura del valor de un botón pulsador

Ya que obtuvimos el valor del botón, vamos a verificar cuál se presionó para determinar si nuestro contador aumenta o disminuye, para hacerlo requerimos realizar una comparación con una estructura selectiva donde la comparación consiste en verificar si la variable valBtn# tienen el valor HIGH.

Ejercicio 8. Validación del valor del botón pulsador

Recuerda que en esta práctica, usamos de los botones B2 que aumentará el contador y B1 que lo disminuirá. 

Generación de la variable contador

Ya identificado el botón que fué presionado (B1 o B2),  ahora se debe programar que la variable contador aumente o disminuye su valor. Lo primero que hacemos es declarar la variable. La variable contador generalmente inicializa en el valor 0 y puede incrementar de 1 en 1 o de acuerdo a tus necesidades es el incremento que va a tener.

La sintaxis de una variable contador para incrementar es la siguiente:

varContador=varContador+constante;

Parámetros

varContador – variable que incrementa o disminuye  su valor de acuerdo a una condición de tipo entero.

constante – cantidad que siempre se le suma o resta

La instrucción para generar la variable contador sería:

vContador=vContador+1;

y para disminuir su valor la instrucción es la siguiente:

vContador=vContador-1;

Uso del operador compuesto

Otra forma de incrementar una variable en Arduino es con el uso del los operadores compuestos. Son aquellos que combinan una operación aritmética con una variable especifica asignada.  De esta forma se puede realizar una operación matemática asignada a una variable o constante. Algunos operadores compuestos son:

OperadorOperación Ejemplo
++incrementovariable++
decrementovariable–
+=suma compuestavariable+=
-=resta compuestavariable-=
Tabla1. Operadores compuestos de Arduino

varContador

Parámetros

varContador – variable que incrementa o disminuye de tipo entero. Devuelve el valor original o recién incrementado de la variable

operador – operador compuesto que incrementa en uno la variable

La instrucción para generar la variable contador que incrementa usando operador compuesto sería:

vContador++;

y la instrucción para generar el decremento de la variable contador es la siguiente:

vContador--;

Validación del valor de la variable contador

Es importante considerar que el display de 7 segmentos visualizará el número 9 como máximo y el 0 como valor mínimo por lo que es importante validar el valor de la variable vContador dependiendo de las siguientes condiciones que se pueden presentar al presionar los botones pulsadores:

  1. Si el valor de la variable vContador  es 9 y se continúa presionando  el botón de aumento (B02),  que la variable vContador reinicie a 0.
  2. Si el valor de la variable vContador es 0 y se  continúa presionando el botón de disminución  (B01),   que la variable vContador conserve el 0.

Ejercicio. 9 Validación e inicialización del contador 

Realiza el siguiente ejercicio para codificar las instrucciones que permitan validar e inicializar la variable contador a 0.

Visualización del contador en el display de 7 segmentos

Cada vez que  se presiona el botón B1, el valor de la variable vContador aumenta y se despliega el valor en el display de 7 segmentos, de igual forma, si se presiona el botón B2, el valor de la variable disminuye y despliega el valor en el display de 7 segmentos. 

La variable vContador aumenta o disminuye en un rango de 0 a 9, y los números que se pueden visualizar en el Display también van del 0 al 9,  observa la figura 4 y responde lo siguiente:

Figura 4. Visualización variable vContador

Ejercicio 10. Observaciones importantes

Muy bien,  estos detalles son importantes para  codificar las instrucciones que permitan visualizar el valor de la variable contador en el display. Resuelve el siguiente ejercicio que te ayudará a construir parte del código para realizar un  recorrido entre las columnas del arreglo DIGITOS.

Ejercicio 11. Recorrido de fila arreglo DIGITOS

Ya que codificamos la estructura for, ahora comenzamos con la instrucción que se repetirá y que consiste en indicar los segmentos del display que deben  encender   para visualizar el número de la variable contador. Retomemos la imagen 4 y observa los siguientes detalles:

Ejercicio 12. Encendido de los segmentos display 

Muy bien, ahora ya podemos codificar todo el programa.

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.

Con los elementos de los ejercicios,   vamos a codificar el programa de Arduino que encienda el segmento A del display. Para ello, sustituye en el siguiente programa el texto <<bloque de instrucciones Ejercicio n>> con las instrucciones que corresponda.

/* Práctica contador de vidas
* Programa que visualiza un dígito en el display de 7 segmentos
* de acuerdo a un aumento o disminución
*/

// Declaración de los arreglos PINES y DIGITOS como constantes
<<bloque de instrucciones ejercicio 1>>
<<bloque de instrucciones ejercicio 2>>


// declaración de las variables
<<bloque de instrucciones ejercicio 3>>

void
setup() {
// Configuración de los pines del arreglo PINES como salida
<<bloque de instrucciones ejercicio 4>>
// Configuración de los botones pulsadores
<<bloque de instrucciones ejercicio 5>>
// Configuración del pin de conexión del transistor NPN de salida y activación del display
<<bloque de instrucciones ejercicio 6>>

}

void loop() {

// Lectura del valor de los botones pulsadores
<<bloque de instrucciones ejercicio 7>>
// Validación del botón B1
<<bloque de instrucciones ejercicio 8>>
vContador ++; //Variable contador aumentando
// Validación e inicialización de la variable contador
<<bloque de instrucciones ejercicio 9>>
// Validación del botón B2
<<bloque de instrucciones ejercicio 8>>
vContador --; //Variable contador aumentando
// Validación e inicialización de la variable contador
<<bloque de instrucciones ejercicio 9>>
// Ciclo para recorrer las columnas del arreglo DIGITOS[][]
<<bloque de instrucciones ejercicio 10>>
// Encendido de del segmento del display con valores[contador][columna]
<<bloque de instrucciones ejercicio 11>>
}

Captura, compila y ejecuta tu programa por medio de siguientes acciones:

  1. Abre el IDE de Arduino.
  2. Crea un nuevo sketch.
  3. Captura las instrucciones del programa.
  4. Guarda tu programa.
  5. Compila tu programa. En caso necesario, depúralo hasta que no tenga ningún error.
  6. Conecta la tarjeta Arduino a tu computadora.
  7. Selecciona el puerto serial (COM) de la computadora asociado a la tarjeta.
  8. Sube el programa a la memoria de la tarjeta Arduino UNO.
  9. Ejecuta tu programa.

Probando el contador.

Realiza pruebas a tu programa y responde las preguntas

  • Presiona el Botón B2 hasta llegar al límite
    • ¿Cuál fue el número máximo desplegado en el display?
    • ¿Qué número se despliega después del  alcanzar el valor máximo?
  • Presiona el Botón B1 hasta llegar al límite
    • ¿Cuál fue el número mínimo desplegado en el display?
    • ¿Qué pasa si presionas el B1 después del valor mínimo?
    • ¿Qué número se despliega después del  alcanzar el valor mínimo?

Resultados

Ahora ya puedes programar la visualización de un contador de vidas en el display de 7 segmentos. Prueba tus nuevas habilidades:

  • Presiona el B2 para aumentar el contador y el botón B1
    • ¿Funciona correctamente el programa?

Conclusiones

Una contador es una variable de tipo entero que aumenta o disminuye su valor de forma progresiva durante la ejecución de un programa. Se utilizan principalmente para llevar el conteo de una acción. En el caso de los juegos, se utiliza un contador para llevar la cuenta de las vidas que se ganan o se pierden.

Finalmente, te invitamos a que respondas las siguientes preguntas:

  1. ¿Por qué crees que es útil conocer cómo se programa una variable contador?
  2. Identifica al menos 5 dispositivos que utilices en tu vida diaria que tengan integrado un contador.
  3. ¿En qué proyectos puedes aplicar el uso de un contador con el display de 7 Segmentos?

Retos Arduino

  1. Escribe un programa en Arduino que muestre un contador en en el display de 7 segmentos donde cada incremento o decremento sea diferente a 1.
  2. Escribe un programa en Arduino que muestre un contador de números pares o de números impares en el display de 7 segmentos.

Referencias

Arduino. (2021). Language Reference. https://www.arduino.cc/reference/en/

Bañuelos, M., Pacheco, M. y Villegas, R. (2021). Módulo 7-segmentos. Manual de Usuario. 

Bañuelos, M., Pacheco, M. y Villegas, R. (2021). Arduino. Manual de programación con Arduino.