Arduino - Display de 7 Segmentos de 4 Dígitos TM1637

Este tutorial ensina como usar um módulo de display de 7 segmentos de 4 dígitos TM1637 com Arduino. Em detalhes, vamos aprender:

Arduino Display de 7 Segmentos de 4 Dígitos TM1637

Sobre o Módulo de Display de 7 Segmentos de 4 Dígitos TM1637

O TM1637 é um CI driver para displays LED de 7 segmentos. O módulo usa apenas dois pinos de dados (CLK e DIO) para se comunicar com o microcontrolador, o que deixa a ligação simples. Ele tem memória de display embutida, então, depois que você escreve os dados nele, o display continua aceso sem nenhum loop de atualização. O módulo também inclui um separador de dois-pontos entre o dígito 1 e o dígito 2, o que é útil para displays de relógio.

Principais características do módulo:

  • 4 dígitos, cada um com 7 segmentos mais um ponto decimal
  • Separador de dois-pontos entre o segundo e o terceiro dígito
  • 8 níveis de brilho (0-7)
  • Interface de 2 fios (CLK + DIO)
  • Memória de display embutida - sem necessidade de atualização
  • Tensão de operação: 3.3V a 5V

Mapeamento de Pinos

Função Pino
CLK Entrada do sinal de clock
DIO Entrada/saída de dados
VCC Alimentação (3.3V ou 5V)
GND Terra

Os pinos CLK e DIO podem ser conectados a quaisquer pinos digitais do Arduino.

Diagrama de Ligação

Conecte o módulo TM1637 ao Arduino da seguinte forma:

  • CLK ao pino 9 do Arduino
  • DIO ao pino 10 do Arduino
  • VCC ao 5V
  • GND ao GND
Diagrama de ligação do Arduino com Display de 7 Segmentos de 4 Dígitos TM1637

This image is created using Fritzing. Click to enlarge image

Instalação da Biblioteca

  • Conecte a placa Arduino ao seu computador com um cabo USB.
  • Abra o Arduino IDE, selecione a placa e a porta corretas.
  • Vá até o ícone Libraries na barra esquerda do Arduino IDE.
  • Pesquise "DIYables_4Digit7Segment_TM1637" e encontre a biblioteca DIYables_4Digit7Segment_TM1637 da DIYables.
  • Clique no botão Install para instalar a versão mais recente da biblioteca.
Biblioteca do Display de 7 Segmentos de 4 Dígitos TM1637 para Arduino

Observação: Esta biblioteca é independente e não tem dependências externas.

Estrutura Básica

Todo sketch que usa a biblioteca DIYables_4Digit7Segment_TM1637 segue esta estrutura básica:

#include <DIYables_4Digit7Segment_TM1637.h> #define CLK_PIN 9 #define DIO_PIN 10 DIYables_4Digit7Segment_TM1637 display(CLK_PIN, DIO_PIN); void setup() { display.begin(); // Display something display.print(1234); } void loop() { // Your code here }

Você cria o objeto display com os números dos pinos CLK e DIO e depois chama begin() em setup(). Depois disso, use métodos como print(), printTemperature() ou printTime() para mostrar dados no display.

Código Arduino - Mostrar Números Inteiros

Este exemplo mostra como exibir vários valores inteiros, incluindo números negativos e saída com preenchimento de zeros.

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-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 9 // The Arduino pin connected to the CLK pin of TM1637 4-digit 7-segment display #define DIO_PIN 10 // The Arduino pin connected to the DIO pin of TM1637 4-digit 7-segment display 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); }

Passos Rápidos

  • Ligue o módulo TM1637 ao seu Arduino como mostrado no diagrama de ligação acima.
  • Conecte a placa Arduino ao seu computador com um cabo USB.
  • Abra o Arduino IDE, selecione a placa e a porta corretas.
  • Copie o código acima e cole no editor do Arduino IDE.
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino.
  • Abra o Serial Monitor para ver a saída.

O display vai passar pelos números 0, 42, 1234, -5, -123, 9999 e depois mostrar 42 com preenchimento de zeros como "0042".

Resumo da API

Método Descrição Exemplo
print(int) Mostra um número inteiro (-999 a 9999) display.print(1234)
print(int, true) Mostra com zeros à esquerda display.print(42, true)
clear() Limpa o display display.clear()

Código Arduino - Mostrar Texto e Temperatura

Este exemplo mostra como exibir textos e a temperatura com o símbolo de grau.

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-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 9 // The Arduino pin connected to the CLK pin of TM1637 4-digit 7-segment display #define DIO_PIN 10 // The Arduino pin connected to the DIO pin of TM1637 4-digit 7-segment display 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); }

Passos Rápidos

  • Ligue o módulo TM1637 ao seu Arduino como mostrado no diagrama de ligação acima.
  • Copie o código acima e cole no editor do Arduino IDE.
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino.
  • Abra o Serial Monitor.

O display vai passar pelos textos "HELP", "Hi", "COOL", "done" e depois mostrar as temperaturas "25°C" e "72°F".

Resumo da API

Método Descrição Exemplo
print(const char*) Mostra um texto (até 4 caracteres) display.print("HELP")
printTemperature(int, char) Mostra a temperatura com o grau e a unidade display.printTemperature(25, 'C')
DEGREE Constante do símbolo de grau para usar em textos display.DEGREE

Código Arduino - Mostrar a Hora com Dois-Pontos Piscando

Este exemplo mostra a hora no estilo de relógio, com dois-pontos que piscam a cada 500 milissegundos.

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-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 9 // The Arduino pin connected to the CLK pin of TM1637 4-digit 7-segment display #define DIO_PIN 10 // The Arduino pin connected to the DIO pin of TM1637 4-digit 7-segment display 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; }

Passos Rápidos

  • Ligue o módulo TM1637 ao seu Arduino como mostrado no diagrama de ligação acima.
  • Copie o código acima e cole no editor do Arduino IDE.
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino.

O display vai mostrar "12:30" com os dois-pontos acendendo e apagando a cada meio segundo.

Resumo da API

Método Descrição Exemplo
printTime(int, int) Mostra a hora HHMM com dois-pontos display.printTime(12, 30)
printTime(int, int, bool) Mostra a hora e controla os dois-pontos (ligado/desligado) display.printTime(12, 30, false)

Código Arduino - Fazer o Display Piscar

Este exemplo faz valores inteiros e textos piscarem usando os métodos off() e on().

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-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 9 // The Arduino pin connected to the CLK pin of TM1637 4-digit 7-segment display #define DIO_PIN 10 // The Arduino pin connected to the DIO pin of TM1637 4-digit 7-segment display 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); }

Passos Rápidos

  • Ligue o módulo TM1637 ao seu Arduino como mostrado no diagrama de ligação acima.
  • Copie o código acima e cole no editor do Arduino IDE.
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino.
  • Abra o Serial Monitor.

O display vai piscar "1234" cinco vezes, fazer uma pausa, depois piscar "HELP" cinco vezes e repetir.

Resumo da API

Método Descrição Exemplo
off() Desliga o display (os dados são mantidos) display.off()
on() Liga o display novamente display.on()
setBrightness(int) Define o brilho de 0 a 7 display.setBrightness(4)

Código Arduino - Controle de Dígitos Individuais

Este exemplo mostra como definir cada dígito separadamente usando números, caracteres e os dois-pontos.

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-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 9 // The Arduino pin connected to the CLK pin of TM1637 4-digit 7-segment display #define DIO_PIN 10 // The Arduino pin connected to the DIO pin of TM1637 4-digit 7-segment display 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); }

Passos Rápidos

  • Ligue o módulo TM1637 ao seu Arduino como mostrado no diagrama de ligação acima.
  • Copie o código acima e cole no editor do Arduino IDE.
  • Clique no botão Upload no Arduino IDE para carregar o código no Arduino.
  • Abra o Serial Monitor.

O display vai mostrar várias combinações de números e caracteres com controle dos dois-pontos.

Resumo da API

Método Descrição Exemplo
setNumber(int, int) Define um dígito (0-9) na posição 0-3 display.setNumber(0, 1)
setChar(int, char) Define um caractere na posição 0-3 display.setChar(0, 'H')
setColon(bool) Liga ou desliga os dois-pontos display.setColon(true)
setSegments(int, uint8_t) Define os segmentos diretamente na posição 0-3 display.setSegments(0, 0x76)

Solução de Problemas

Se o código não funcionar, há alguns problemas comuns que você pode verificar:

  • O display não mostra nada: Verifique as conexões da ligação. Certifique-se de que CLK e DIO estão conectados aos pinos corretos do Arduino. Confirme se o VCC está conectado ao 5V ou 3.3V e o GND ao GND.
  • O display mostra dígitos errados: Verifique se os valores de CLK_PIN e DIO_PIN no seu código correspondem à ligação real. Trocar CLK e DIO é um erro comum.
  • O display está muito fraco ou muito forte: Use setBrightness(level) com um valor de 0 (mais fraco) a 7 (mais forte) para ajustar.
  • Erro de compilação por falta de biblioteca: Certifique-se de que você instalou a biblioteca DIYables_4Digit7Segment_TM1637 pelo Arduino Library Manager.

Plataformas Suportadas

A biblioteca usa apenas APIs padrão do Arduino (pinMode, digitalWrite, digitalRead, delayMicroseconds) e suporta todas as plataformas 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!