Placa de desarrollo Arduino UNO - TM1637
El TM1637 es un controlador de display LED muy popular y barato que se usa principalmente para manejar displays de 7 segmentos de 4 dígitos. En este ejemplo montamos un contador de 0 a 9999 controlado por dos pulsadores.
Características principales
- Controla 4 dígitos de 7 segmentos más los dos puntos centrales, ideal para relojes, contadores o temperatura.
- Solo necesita 2 pines de datos (
CLKyDIO) más alimentación. - Protocolo serial parecido a I²C, aunque no es I²C real: es un protocolo propio del chip.
- Brillo ajustable en 8 niveles (0 a 7).
- Voltaje de trabajo: 3.3 V a 5 V.
Usos más comunes
- Reloj digital
- Contador de tiempo o de eventos
- Mostrar temperatura, humedad, distancia o voltaje
- Temporizadores y cronómetros
- Proyectos con Arduino, ESP32 o Raspberry Pi Pico
Conexiones
Es de los módulos más sencillos de cablear: cuatro hilos y no necesita potenciómetro de contraste ni resistencias externas.
| Pin del TM1637 | Conexión | Nota |
|---|---|---|
CLK | Pin 2 | Reloj |
DIO | Pin 3 | Datos |
VCC | 5 V | También funciona a 3.3 V |
GND | GND | — |
Pulsadores: SWITCH1 en A2 (subir) y SWITCH2 en A3 (bajar), ambos a GND con INPUT_PULLUP. | ||
Antes de compilar: instala la librería
A diferencia de LiquidCrystal, la librería del TM1637 no viene incluida en el Arduino IDE. En Herramientas → Administrar bibliotecas, busca TM1637 e instala la de Avishay Orpaz. Sin ella el sketch no compila.
Código del programa
#include <TM1637Display.h>
// Definición de pines según el diagrama
const int CLK = 2;
const int DIO = 3;
const int SWITCH1 = A2; // Subir
const int SWITCH2 = A3; // Bajar
TM1637Display display(CLK, DIO);
int contador = 0;
void setup() {
pinMode(SWITCH1, INPUT_PULLUP);
pinMode(SWITCH2, INPUT_PULLUP);
display.setBrightness(5); // Brillo medio (0-7)
display.showNumberDec(contador); // Mostrar 0 al inicio
}
void loop() {
// Switch 1 -> subir contador
if (digitalRead(SWITCH1) == LOW) {
contador++;
if (contador > 9999) contador = 9999; // Límite máximo
display.showNumberDec(contador);
delay(200);
}
// Switch 2 -> bajar contador
if (digitalRead(SWITCH2) == LOW) {
contador--;
if (contador < 0) contador = 0; // Límite mínimo
display.showNumberDec(contador);
delay(200);
}
}
Cómo funciona
El display muestra un contador que empieza en 0. Con SWITCH1 (A2) sumas de uno en uno hasta un máximo de 9999, y con SWITCH2 (A3) restas hasta llegar a 0.
A diferencia del LCD, aquí no hace falta limpiar la fila antes de escribir: showNumberDec() refresca los cuatro dígitos de una vez, así que no quedan restos del número anterior.
El delay(200) controla la velocidad de incremento. Si mantienes el botón pulsado, el número sube o baja de forma continua; reduce el valor para que corra más rápido o súbelo para frenarlo.
Posibles mejoras
Con display.setBrightness(0..7) puedes atenuar la pantalla, útil si el proyecto va a estar en una habitación a oscuras. Y si quieres usarlo como reloj, showNumberDecEx() permite encender los dos puntos centrales del separador.