Inicio / Arduino

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

Usos más comunes

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 TM1637ConexiónNota
CLKPin 2Reloj
DIOPin 3Datos
VCC5 VTambién funciona a 3.3 V
GNDGND
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

Arduino / C++
#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.