Arduino Nano ESP32 - Display de 7 Segmentos e 4 Dígitos TM1637
Bem-vindo a este workshop prático em que conectamos um display de 7 segmentos e 4 dígitos TM1637 a um Arduino Nano ESP32. O Nano ESP32 é construído em torno do chip ESP32-S3, que oferece Wi-Fi, Bluetooth Low Energy e processamento dual-core - tudo isso no já conhecido formato Nano com conector USB-C. O módulo TM1637 funciona em 3.3V, então ele se liga diretamente ao Nano ESP32 sem nenhuma conversão de nível.
Neste workshop você vai:
- Ligar o display TM1637 ao Arduino Nano ESP32.
- Mostrar inteiros, texto e temperatura no display de 7 segmentos.
- Exibir a hora no formato HH:MM com os dois pontos piscando.
- Controlar dígitos individuais e ajustar o brilho.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Módulo de Display TM1637
O TM1637 é um CI driver de LED especializado que cuida sozinho da multiplexação de quatro dígitos de 7 segmentos. A transferência de dados usa um protocolo serial de 2 fios pelos pinos CLK e DIO. O chip guarda o conteúdo do display em registradores internos, então tudo o que você envia fica na tela sem que o microcontrolador precise atualizá-lo continuamente.
Recursos do módulo:
- 4 dígitos, cada um com 7 segmentos e um ponto decimal
- Separador de dois pontos entre o dígito 1 e o dígito 2
- 8 níveis de brilho controlados por software
- Interface de 2 fios com suporte a lógica de 3.3V e 5V
- Memória do display não volátil
| Função | Pino |
|---|---|
| CLK | Entrada do sinal de clock |
| DIO | Entrada/saída de dados |
| VCC | Alimentação (3.3V ou 5V) |
| GND | Terra |
Conecte CLK e DIO a quaisquer pinos digitais disponíveis do Nano ESP32. Os exemplos usam D2 e D4.
Diagrama de Ligação
Conecte o módulo TM1637 ao Arduino Nano ESP32:
- CLK ao D9
- DIO ao D10
- VCC ao 3.3V
- GND ao GND

This image is created using Fritzing. Click to enlarge image
Instalação da Biblioteca
- Conecte o Arduino Nano ESP32 ao seu computador pela porta USB-C.
- Abra o Arduino IDE. Escolha Arduino Nano ESP32 na lista de placas e selecione a porta correta.
- Clique no ícone Libraries na barra lateral esquerda.
- Digite "DIYables_4Digit7Segment_TM1637" no campo de busca. Encontre a entrada da DIYables.
- Clique em Install.

Biblioteca independente - nada mais para instalar.
Sketch Inicial
O código mínimo necessário para começar com a biblioteca DIYables_4Digit7Segment_TM1637:
Crie o objeto do display com os números dos pinos, chame begin() e comece a escrever os dados. O Nano ESP32 usa rótulos de pino Dx, que são mapeados internamente para os números de GPIO do ESP32-S3.
Workshop - Mostrar Números Inteiros
Teste o display com vários valores inteiros - positivos, negativos e preenchidos com zeros.
Mão na Massa
- Ligue o módulo TM1637 ao Nano ESP32 como mostrado no diagrama de ligação.
- Conecte o Nano ESP32 ao seu computador via USB-C.
- No Arduino IDE, escolha a placa e a porta, cole o código e clique em Upload.
- Abra o Serial Monitor para observar os resultados.
O display percorre 0, 42, 1234, -5, -123, 9999 e depois mostra "0042" com preenchimento de zeros.
Referência de Métodos
| Método | Ação | Sintaxe |
|---|---|---|
| print(int) | Mostra um inteiro (-999 a 9999) | display.print(1234) |
| print(int, true) | Mostra com zeros à esquerda | display.print(42, true) |
| clear() | Limpa todos os dígitos | display.clear() |
Workshop - Mostrar Texto e Temperatura
Coloque textos e leituras de temperatura no display, incluindo o símbolo de grau.
Mão na Massa
- Ligue o módulo e faça o upload do sketch.
- Abra o Serial Monitor.
O display mostra "HELP", "Hi", "COOL", "done", depois "25°C" e "72°F".
Referência de Métodos
| Método | Ação | Sintaxe |
|---|---|---|
| print(const char*) | Mostra texto (até 4 caracteres) | display.print("HELP") |
| printTemperature(int, char) | Mostra a temperatura com grau/unidade | display.printTemperature(25, 'C') |
| DEGREE | Constante do símbolo de grau | display.DEGREE |
Workshop - Mostrar Hora com Dois Pontos Piscando
Configure um display estilo relógio com os dois pontos piscando em intervalos de 500ms.
Mão na Massa
- Faça o upload e veja "12:30" com os dois pontos acendendo e apagando.
Referência de Métodos
| Método | Ação | Sintaxe | |
|---|---|---|---|
| printTime(int, int) | Mostra a hora HH | MM com dois pontos | display.printTime(12, 30) |
| printTime(int, int, bool) | Mostra a hora, controla o estado dos dois pontos | display.printTime(12, 30, false) |
Workshop - Piscar o Display
Crie um efeito de piscar usando off() e on() mantendo o conteúdo do display intacto.
Mão na Massa
- Faça o upload do código. "1234" pisca cinco vezes, depois "HELP" pisca cinco vezes.
Referência de Métodos
| Método | Ação | Sintaxe |
|---|---|---|
| off() | Desliga o display (dados preservados) | display.off() |
| on() | Liga o display novamente | display.on() |
| setBrightness(int) | Define o brilho de 0 a 7 | display.setBrightness(4) |
Workshop - Controle Individual de Dígitos
Defina cada posição de dígito de forma independente usando números, caracteres e os dois pontos.
Mão na Massa
- Faça o upload e observe as diferentes combinações de dígitos e caracteres no display.
Referência de Métodos
| Método | Ação | Sintaxe |
|---|---|---|
| setNumber(int, int) | Define o dígito 0-9 na posição 0-3 | display.setNumber(0, 1) |
| setChar(int, char) | Define o caractere na posição 0-3 | display.setChar(0, 'H') |
| setColon(bool) | Liga/desliga os dois pontos | display.setColon(true) |
| setSegments(int, uint8_t) | Define os segmentos brutos na posição 0-3 | display.setSegments(0, 0x76) |
Solução de Problemas
| Problema | Causa Possível | Solução |
|---|---|---|
| O display está em branco | Ligação ou números de pino errados | Verifique se as conexões de CLK/DIO correspondem ao código e se o VCC vai ao 3.3V |
| Caracteres errados | CLK e DIO trocados | Troque os dois fios de sinal |
| Display muito fraco | Configuração de brilho baixa | Chame setBrightness(7) para o máximo |
| Biblioteca não encontrada | Não instalada | Instale DIYables_4Digit7Segment_TM1637 pelo Library Manager |
| Falha no upload | Placa no modo errado | Mantenha o botão BOOT pressionado enquanto pressiona o RESET e tente o upload novamente |
Suporte a Plataformas
A biblioteca é construída inteiramente sobre as APIs padrão do Arduino e suporta todas as plataformas compatíveis com Arduino (architectures=*).