Cómo encender cada segmento del módulo TM1637 (Previsualizar)

Hola_TM1637

Un display 7 segmentos de 4 dígitos tradicional tiene 12 pines. Este módulo incluye un chip TM1637 para reducir a 2 los pines para controlar los 4 dígitos. Esto quiere decir que, con solo 2 pines digitales se controla tanto el valor como la iluminación.

Vamos a aprender a conectar y programar un display 7 segmentos de 4 dígitos, cómo iluminar cada segmento del dígito y crear segmento a segmento una palabra o número. ¿Estás preparado?

¿Qué vamos a necesitar?

¿Lo tienes todo? ¡Vamos a conectarlo!

Conexión

Este display 7 segmentos tiene dos hilos para alimentación, GND y VCC (que puede ser 5V o 3.3V), y dos pines de datos (CLK y DIO) que podemos conectar a los pines digitales de Arduino que queramos. En los ejemplos siguientes vamos a conectar CLK al pin digital 2 de Arduino, y DIO al pin digital 3.

TM1637 esquema-conexion

Instalación de librería

Para utilizar el chip TM1637 tenemos que instalar una librería en Arduino IDE. Descarga la librería (enlace directo), abre Arduino IDE y ve a Programa > Include Library > Add .ZIP Library, busca el archivo descargado y selecciónalo.

Encendiendo segmentos

Esto se pone interesante. Vamos a ver cómo se encienden los segmentos del display TM1637.

1.En Arduino IDE > Programa > Include Library > TM1637-master

2. Definimos las variables CLK y DIO:

const int CLK = 2;

const int DIO = 3;

3. Instanciamos el TM1637. Para ello creamos un objeto indicando en su constructor los pines a los que CLK y DIO están conectados.

TM1637Display display(CLK, DIO);

4. Creamos una variable byte de tipo array para encender cada uno de los segmentos de los dígitos. Un dígito de un display 7 segmentos tiene etiquetados cada uno de sus segmentos como muestra la imagen siguiente:

Dígito de display 7 segmentos con etiquetas

¿Cómo funcionan estas variables? Existen varias formas de crear variables de tipo array, la que vamos a usar contiene el tamaño y su valor. Es decir, vamos a crear una variable de tamaño 8 bytes y cada byte tendrá un valor. ¿Qué valores serán?

Segmento A 00000001
Segmento B 00000010
Segmento C 00000100
Segmento D 00001000
Segmento E 00010000
Segmento F 00100000
Segmento G 01000000

Además, algunas pantallas 7 segmentos incluyen un octavo representando separadores (como puntos o dos puntos) u otros símbolos que se iluminan con el bit 10000000.

¿Probamos iluminar nuestro display 7 segmentos TM1637? Vamos a representar la palabra “HOLA”

Para hacer la letra H necesitamos iluminar los segmentos B, C, E, F, G. Para hacer la letra O necesitamos los segmentos A, B, C, D, E, F, y así con el resto de las letras. De forma que nuestra variable byte HOLA queda así:

byte HOLA[] = {
0b01110110, // H
0b00111111, // O
0b00111000, // L
0b01110111  // A
};

Para mayor comodidad, la librería que estamos usando incluye las siguientes macros que facilitan el trabajo con los segmentos:

 #define SEG_A 0b00000001
#define SEG_B 0b00000010
#define SEG_C 0b00000100
#define SEG_D 0b00001000
#define SEG_E 0b00010000
#define SEG_F 0b00100000
#define SEG_G 0b01000000

De esta forma, si queremos representar un HOLA, podemos hacer una OR de cada uno de los segmentos y almacenar el resultado en el byte de datos:

byte HOLA[] = {
SEG_B | SEG_C | SEG_E | SEG_F | SEG_ G,            // H
SEG_A | SEG_B | SEG_C | SEG_E | SEG_F,             // O
SEG_D | SEG_E | SEG_F,                             // L
SEG_A | SEG_B | SEG_C | SEG_E | SEG_F | SEG_ G     // A
};

¡Puedes usar cualquiera de las dos formas, la que te resulte más cómoda!

Ya solo nos queda mostrar los datos en la pantalla. Para ello vamos a usar las siguientes funciones:

display.setBrightness(); podemos definir la intensidad de brillo del display, desde un valor hexadecimal 0x00 (0 en decimal), hasta un brillo máximo 0x0f (15 en decimal). En el paréntesis podremos el valor del brillo, por ejemplo, 0x0f

display.setSegments(); recibe el array de dígitos a encender en “formato segmento”, y los muestra por pantalla. En el paréntesis pondremos qué queremos mostrar, en nuestro caso, la variable array HOLA.

El código completo nos quedaría así:

Y si hemos usado las variables SEG_ definidas en la librería, el código sería:

Cacharrea, crea y comparte tus proyectos.

  • 20 Cables Jumper para prototipar hembra-hembra
    20 Cables Jumper para prototipar macho-hembra
    Seleccionar opciones
    Vista rápida
    3,00  (2,48  excl. IVA)
    En tienda
  • Agotado
    Genuino UNO Rev. 3
    Genuino UNO Rev. 3
    Leer más
    Vista rápida
    25,00  (20,66  excl. IVA)
    Temporalmente no disponible
  • Módulo 7 segmentos 4 dígitos TM1637
    Módulo 7 segmentos 4 dígitos TM1637
    Añadir al carrito
    Vista rápida
    3,80  (3,14  excl. IVA)
    En tienda
Volver a: Aprende a usar el módulo 7 segmentos TM1637 con Arduino

©2017 Fábrica Digital desde Jerez de la Frontera, España.

717 717 452 (Teléfono y Whatsapp) / hola@fabricadigital.org

De Lunes a Jueves de 09:00 a 18:00. Viernes de 09:00 a 14:00.

Calle del Comercio, 18, 11407 Jerez de la Frontera, Cádiz. - Cómo llegar

Información Legal - Aceptamos

 

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account