En esta entrada te presentamos nuestra librería GFDisplay7S que está diseñada para manejar arreglos de displays de 7 segmentos conectados directamente a los pines de nuestro microcontrolador, haciéndose cargo de la secuencia de multiplexado de los displays y también de preparar los datos que se mostrarán, permitiéndonos dibujar números y algunos caracteres mediante el método print().
Nuestra librería está diseñada para ser muy similar a la librería LiquidCrystal de Arduino y sus métodos y uso son equivalentes a los de esta, con la diferencia de que está diseñada solamente para caracteres numéricos.
La rutina de actualización de nuestra librería puede ejecutarse directamente en el ciclo principal (dentro de la función loop) o bien ser llamada desde una rutina de servicio de interrupción activada por un “timer”.
Características principales
- Manejo de arreglo de displays de 2 a 10 displays
- Código simple y fácil de entender, ideal para enseñar sobre la creación de librerías de Arduino
- Puede usarse cualquier combinación de pines para manejar el arreglo
- Soporte para punto decimal para imprimir variables de tipo flotante
- Puede usarse con displays de ánodo y cátodo común
- Pueden imprimirse números usando los métodos print() y println estándar de Arduino
- La velocidad de refresco puede configurarse por software
- La frecuencia de actualización puede cambiarse alterando el periodo de interrupción o re el ciclo principal del programa
- Se ha dejado deliberadamente fuera de la librería el manejo de interrupciones y timers, sin embargo puede llamarse de manera segura desde una rutina de servicio de interrupción
Compatibilidad
La librería para el control de arreglos de displays de 7 segmentos ha sido probada en las siguientes plataformas o tarjetas de desarrollo:
Dentro de la instalación de la librería se incluye un ejemplo para refrescar los displays desde una rutina de servicio de interrupción, sin embargo este ejemplo solo funcionará en placas basadas en AVR (como el Arduino Uno Rev3).
Descarga e instalación
Para descargar e instalar la librería se puede utilizar el gestor de librerías en Arduino IDE buscando por el nombre “GFDisplay7S”. Recomendamos siempre instalar la última versión disponible de la librería para garantizar una operación libre de errores.

También puedes optar por instalarla manualmente descargándola desde GitHub en el repositorio GFDisplay7S.
Uso básico de la librería para display de 7 segmentos GFDisplay7S
Para mostrar información en un arreglo de displays, una vez instalada la librería debemos:
- Incluir la librería en nuestro sketch
- Crear una instancia de la clase GFDisplay7S, pasando como parámetro:
- Llamar al método begin() en la función setup()
- En la función loop() debemos llamar periódicamente al método process(), aproximadamente cada 3 milisegundos.
- Para mostrar caracteres en el display podemos usar los métodos write() y print()
El programa de ejemplo más simple se muestra a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | /** GeekFactory - "INNOVATING TOGETHER" www.geekfactory.mx Basic example for GFDisplay7S, this example illustrates how to print numbers on the display array. */ #include <GFDisplay7S.h> // Array that defines the pins used for segments // Order: {a, b, c, d, e, f, g, dp} // Use GFDISPLAY7S_UNUSED_PIN if DP is not connected const uint8_t segmentPins[] = { 5, 6, 7, 8, 9, 10, 11, GFDISPLAY7S_UNUSED_PIN }; // Array that defines the pins used to drive each digit’s common pin (left to right) const uint8_t commonPins[] = { 12, 13, A0, A1, A2, A3 }; // Instantiate an object to drive the display array. // First array = segment pins {a, b, c, d, e, f, g, dp} // Second array = common pins for each digit (left to right) // Third parameter = number of digits GFDisplay7S display7s(segmentPins, commonPins, 6); void setup() { // call begin() to prepare object for use display7s.begin(); // call print() to display numeric data display7s.print("123456"); // make the last digit (index 5, zero-based) blink display7s.blinkDigit(5); } void loop() { // Refresh the display (call this frequently) display7s.process(); // Small delay to control refresh rate // Smaller delays = smoother display, but more CPU usage // In practical use, replace this with a timer ISR for best performance delay(3); } |
Enlaces e información adicional
- Proyecto de reloj digital con displays de 7 segmentos
- Proyecto de voltímetro con Arduino y display de 7 segmentos
- Display de 7 segmentos estándar (ánodo o cátodo común)
- Display de 4 dígitos de 7 segmentos
- Módulo de displays 7 segmentos grandes de 1.8 pulgadas y 3 dígitos







