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:

Display de 7 Segmentos e 4 Dígitos TM1637 do Arduino Nano ESP32

Hardware Necessário

1×Arduino Nano ESP32
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×Display de 7 segmentos de 4 dígitos TM1637
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

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
Diagrama de ligação do Display de 7 Segmentos e 4 Dígitos TM1637 do Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Instalação da Biblioteca

  1. Conecte o Arduino Nano ESP32 ao seu computador pela porta USB-C.
  2. Abra o Arduino IDE. Escolha Arduino Nano ESP32 na lista de placas e selecione a porta correta.
  3. Clique no ícone Libraries na barra lateral esquerda.
  4. Digite "DIYables_4Digit7Segment_TM1637" no campo de busca. Encontre a entrada da DIYables.
  5. Clique em Install.
Biblioteca do Display de 7 Segmentos e 4 Dígitos TM1637 para Arduino

Biblioteca independente - nada mais para instalar.

Sketch Inicial

O código mínimo necessário para começar com a biblioteca DIYables_4Digit7Segment_TM1637:

#include <DIYables_4Digit7Segment_TM1637.h> #define CLK_PIN D9 #define DIO_PIN D10 DIYables_4Digit7Segment_TM1637 display(CLK_PIN, DIO_PIN); void setup() { display.begin(); display.print(1234); } void loop() { }

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.

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-tm1637-4-digit-7-segment-display */ /* * DIYables_4Digit7Segment_TM1637 - Integer Example * * Displays various integer values on a 4-digit 7-segment display * with TM1637 driver, including zero-padded numbers. * * Tutorial: https://diyables.io/products/4-digit-7-segment-display-led-tm1637-with-colon * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables Nano R3: https://diyables.io/nano-board * - DIYables ESP32 Board: https://diyables.io/esp32-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_4Digit7Segment_TM1637.h> // Pin configuration - change to match your wiring #define CLK_PIN D9 #define DIO_PIN D10 DIYables_4Digit7Segment_TM1637 display(CLK_PIN, DIO_PIN); void setup() { Serial.begin(9600); display.begin(); Serial.println("TM1637 Integer Example"); } void loop() { // Display various integers int numbers[] = {0, 42, 1234, -5, -123, 9999}; int count = sizeof(numbers) / sizeof(numbers[0]); for (int i = 0; i < count; i++) { display.print(numbers[i]); Serial.print("Displaying: "); Serial.println(numbers[i]); delay(2000); } // Display with zero padding display.print(42, true); // Shows "0042" Serial.println("Displaying: 0042 (zero-padded)"); delay(2000); }

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.

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-tm1637-4-digit-7-segment-display */ /* * DIYables_4Digit7Segment_TM1637 - TextAndDegree Example * * Displays text strings, special characters, and temperature * on a 4-digit 7-segment display with TM1637 driver. * * Tutorial: https://diyables.io/products/4-digit-7-segment-display-led-tm1637-with-colon * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables Nano R3: https://diyables.io/nano-board * - DIYables ESP32 Board: https://diyables.io/esp32-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_4Digit7Segment_TM1637.h> // Pin configuration - change to match your wiring #define CLK_PIN D9 #define DIO_PIN D10 DIYables_4Digit7Segment_TM1637 display(CLK_PIN, DIO_PIN); void setup() { Serial.begin(9600); display.begin(); Serial.println("TM1637 Text and Degree Example"); } void loop() { // Display text strings const char* texts[] = {"HELP", "Hi", "COOL", "done"}; for (int i = 0; i < 4; i++) { display.print(texts[i]); Serial.print("Displaying: "); Serial.println(texts[i]); delay(2000); } // Display temperature with degree symbol display.printTemperature(25, 'C'); // Shows "25°C" Serial.println("Displaying: 25 degrees C"); delay(2000); display.printTemperature(72, 'F'); // Shows "72°F" Serial.println("Displaying: 72 degrees F"); delay(2000); // Display string with degree constant char buf[5]; buf[0] = '2'; buf[1] = '5'; buf[2] = DIYables_4Digit7Segment_TM1637::DEGREE; buf[3] = 'C'; buf[4] = '\0'; display.print(buf); // Same as printTemperature(25, 'C') Serial.println("Displaying: 25 degrees C (via print)"); delay(2000); }

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.

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-tm1637-4-digit-7-segment-display */ /* * DIYables_4Digit7Segment_TM1637 - Time Example * * Displays time in HH:MM format with blinking colon separator * on a 4-digit 7-segment display with TM1637 driver. * * Tutorial: https://diyables.io/products/4-digit-7-segment-display-led-tm1637-with-colon * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables Nano R3: https://diyables.io/nano-board * - DIYables ESP32 Board: https://diyables.io/esp32-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_4Digit7Segment_TM1637.h> // Pin configuration - change to match your wiring #define CLK_PIN D9 #define DIO_PIN D10 DIYables_4Digit7Segment_TM1637 display(CLK_PIN, DIO_PIN); int hours = 12; int minutes = 30; bool colonOn = true; void setup() { Serial.begin(9600); display.begin(); Serial.println("TM1637 Time Example"); Serial.println("Displaying 12:30 with blinking colon"); } void loop() { display.printTime(hours, minutes, colonOn); delay(500); // Toggle colon every 500ms for blinking effect colonOn = !colonOn; }

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 HHMM 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.

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-tm1637-4-digit-7-segment-display */ /* * DIYables_4Digit7Segment_TM1637 - Blink Example * * Blinks integer and text on a 4-digit 7-segment display * using off() and on() to toggle the display. * * Tutorial: https://diyables.io/products/4-digit-7-segment-display-led-tm1637-with-colon * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables Nano R3: https://diyables.io/nano-board * - DIYables ESP32 Board: https://diyables.io/esp32-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_4Digit7Segment_TM1637.h> // Pin configuration - change to match your wiring #define CLK_PIN D9 #define DIO_PIN D10 DIYables_4Digit7Segment_TM1637 display(CLK_PIN, DIO_PIN); void setup() { Serial.begin(9600); display.begin(); Serial.println("TM1637 Blink Example"); } void loop() { // Blink an integer display.print(1234); Serial.println("Blinking: 1234"); for (int i = 0; i < 5; i++) { display.off(); delay(300); display.on(); delay(300); } delay(1000); // Blink text display.print("HELP"); Serial.println("Blinking: HELP"); for (int i = 0; i < 5; i++) { display.off(); delay(300); display.on(); delay(300); } delay(1000); }

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.

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-tm1637-4-digit-7-segment-display */ /* * DIYables_4Digit7Segment_TM1637 - IndividualDigits Example * * Sets individual digits, characters, and colon on a 4-digit * 7-segment display with TM1637 driver. * * Tutorial: https://diyables.io/products/4-digit-7-segment-display-led-tm1637-with-colon * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4B Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables Nano R3: https://diyables.io/nano-board * - DIYables ESP32 Board: https://diyables.io/esp32-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_4Digit7Segment_TM1637.h> // Pin configuration - change to match your wiring #define CLK_PIN D9 #define DIO_PIN D10 DIYables_4Digit7Segment_TM1637 display(CLK_PIN, DIO_PIN); void setup() { Serial.begin(9600); display.begin(); Serial.println("TM1637 Individual Digits Example"); } void loop() { // Set individual numbers on each digit position display.clear(); display.setNumber(0, 1); display.setNumber(1, 2); display.setNumber(2, 3); display.setNumber(3, 4); Serial.println("Displaying: 1234"); delay(2000); // Turn colon on display.setColon(true); Serial.println("Displaying: 12:34"); delay(2000); // Turn colon off display.setColon(false); Serial.println("Displaying: 1234"); delay(2000); // Set individual characters display.clear(); display.setChar(0, 'H'); display.setChar(1, 'E'); display.setChar(2, 'L'); display.setChar(3, 'P'); Serial.println("Displaying: HELP"); delay(2000); // Mix characters and numbers with colon display.clear(); display.setChar(0, 'A'); display.setNumber(1, 3); display.setChar(2, 'b'); display.setNumber(3, 7); display.setColon(true); Serial.println("Displaying: A3:b7"); delay(2000); // Blinking colon effect display.clear(); display.setNumber(0, 1); display.setNumber(1, 2); display.setNumber(2, 3); display.setNumber(3, 0); Serial.println("Blinking colon: 12:30"); for (int i = 0; i < 5; i++) { display.setColon(true); delay(500); display.setColon(false); delay(500); } delay(1000); }

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=*).

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!