Arduino Uno R4 - Display de 7 Segmentos e 4 Dígitos com TM1637

O Arduino Uno R4 - disponível como Minima e WiFi - traz mais poder de processamento, mais memória e um ADC de 14 bits, mantendo o layout clássico de conectores do Uno. O módulo de display TM1637 se conecta a quaisquer dois pinos digitais e funciona tanto em 3.3V quanto em 5V, então ele combina com o Uno R4 sem nenhuma conversão de nível.

Neste guia você vai:

Display de 7 segmentos e 4 dígitos TM1637 com Arduino Uno R4

Visão Geral do Display de 7 Segmentos e 4 Dígitos com TM1637

O módulo TM1637 controla um display LED de 7 segmentos e 4 dígitos usando apenas dois fios de sinal (CLK e DIO). Ele cuida da multiplexação dos LEDs internamente e guarda os dados do display na sua própria memória, o que significa que o display continua aceso sem nenhuma atualização contínua do microcontrolador.

Destaques:

  • 4 dígitos com 7 segmentos cada, mais pontos decimais
  • LED de dois-pontos entre o dígito 1 e o dígito 2 para um display no estilo de relógio
  • 8 níveis de brilho ajustáveis
  • Interface serial de 2 fios
  • Funciona com lógica de 3.3V ou 5V
Função Pino
CLK Entrada do sinal de clock
DIO Entrada/saída de dados
VCC Alimentação (3.3V ou 5V)
GND Terra

Quaisquer dois pinos digitais do Uno R4 podem servir como CLK e DIO.

Diagrama de Ligação

Conecte o TM1637 ao seu Arduino Uno R4:

  • CLK ao pino 9
  • DIO ao pino 10
  • VCC ao 5V
  • GND ao GND
Diagrama de ligação do display de 7 segmentos e 4 dígitos TM1637 com Arduino Uno R4

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.

Como Instalar a Biblioteca

  1. Conecte o Arduino Uno R4 ao seu computador usando um cabo USB Type-C.
  2. Na Arduino IDE, verifique se a placa correta (Arduino Uno R4 Minima ou WiFi) e a porta serial estão selecionadas.
  3. Clique no ícone Libraries na barra lateral esquerda.
  4. Digite "DIYables_4Digit7Segment_TM1637" na caixa de busca e localize a biblioteca publicada pela DIYables.
  5. Clique em Install para adicionar a biblioteca à sua IDE.
Biblioteca do display de 7 segmentos e 4 dígitos TM1637 para Arduino

Nenhuma dependência adicional é necessária - a biblioteca é totalmente independente.

Estrutura Mínima do Sketch

Todos os sketches que usam a biblioteca DIYables_4Digit7Segment_TM1637 compartilham este esqueleto:

#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.print(1234); } void loop() { }

Crie o objeto do display com os números dos pinos, chame begin() uma vez e você já pode escrever dados no display.

Mostrar Valores Inteiros

Exibe vários inteiros no display de 7 segmentos, incluindo saída preenchida com zeros.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-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); }

Como Executar

  • Conecte o módulo TM1637 ao Arduino Uno R4 como descrito no diagrama de ligação.
  • Conecte o cabo USB Type-C.
  • Cole o código na Arduino IDE, escolha a placa e a porta corretas e pressione Upload.
  • Abra o Serial Monitor para ver a saída.

Os números passam por 0, 42, 1234, -5, -123, 9999, seguidos de "0042" preenchido com zeros.

Referência Rápida de Métodos

Método O Que Faz Uso
print(int) Mostra um inteiro (-999 a 9999) display.print(1234)
print(int, true) Mostra com zeros à esquerda display.print(42, true)
clear() Apaga o display display.clear()

Mostrar Texto e Temperatura

Exibe textos, o símbolo de grau e a temperatura formatada.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-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); }

Como Executar

  • Ligue o módulo como mostrado acima.
  • Faça o upload do sketch e abra o Serial Monitor.

O display passa por "HELP", "Hi", "COOL", "done" e depois mostra "25°C" e "72°F".

Referência Rápida de Métodos

Método O Que Faz Uso
print(const char*) Exibe um texto (até 4 caracteres) display.print("HELP")
printTemperature(int, char) Mostra a temperatura com grau e unidade display.printTemperature(25, 'C')
DEGREE Caractere de grau para montar textos display.DEGREE

Mostrar a Hora com Dois-Pontos Piscantes

Exibe uma saída parecida com um relógio, com os dois-pontos alternando a cada meio segundo.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-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; }

Como Executar

  • Ligue o módulo e faça o upload do código.
  • O display mostra "12:30" com os dois-pontos piscando.

Referência Rápida de Métodos

Método O Que Faz Uso
printTime(int, int) Mostra HHMM com os dois-pontos acesos display.printTime(12, 30)
printTime(int, int, bool) Mostra HHMM, controla os dois-pontos display.printTime(12, 30, false)

Piscar o Display Ligando e Desligando

Usa off() e on() para criar um efeito de piscar mantendo o conteúdo do display.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-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); }

Como Executar

  • Faça o upload e observe - "1234" pisca cinco vezes e depois "HELP" pisca cinco vezes.

Referência Rápida de Métodos

Método O Que Faz Uso
off() Desliga o display, os dados permanecem display.off()
on() Restaura o display display.on()
setBrightness(int) Ajusta o brilho (0-7) display.setBrightness(4)

Controlar Dígitos Individuais

Define cada dígito de forma independente usando números, caracteres e o separador de dois-pontos.

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-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); }

Como Executar

  • Faça o upload do código e veja o display passar por diferentes combinações.

Referência Rápida de Métodos

Método O Que Faz Uso
setNumber(int, int) Coloca um dígito de 0-9 em uma posição display.setNumber(0, 1)
setChar(int, char) Coloca um caractere em uma posição display.setChar(0, 'H')
setColon(bool) Liga ou desliga os dois-pontos display.setColon(true)
setSegments(int, uint8_t) Escreve dados brutos dos segmentos display.setSegments(0, 0x76)

Solução de Problemas

  • Nada aparece no display - Confira a ligação novamente. CLK e DIO devem corresponder aos números dos pinos no código. O VCC deve ir ao 5V (ou 3.3V).
  • Aparecem caracteres errados - CLK e DIO provavelmente estão trocados. Tente trocar os dois fios.
  • Brilho muito baixo - Chame setBrightness(7) para o brilho máximo.
  • Biblioteca não encontrada - Instale a DIYables_4Digit7Segment_TM1637 pelo Library Manager na Arduino IDE.

Suporte de Plataformas

A biblioteca depende exclusivamente das APIs padrão do Arduino (pinMode, digitalWrite, digitalRead, delayMicroseconds) e funciona em todas as plataformas compatíveis com Arduino.

※ 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!