Cómo encender cada segmento del módulo TM1637
https://fabricadigital.org/leccion/como-encender-cada-segmento-del-modulo-tm1637/
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.
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:
¿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
Segmento B
Segmento C
Segmento D
Segmento E
Segmento F
Segmento G
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: