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

Este passo a passo leva você, etapa por etapa, ao uso de um módulo de display de 7 segmentos e 4 dígitos com TM1637 no Arduino Nano. O Nano reúne o mesmo ATmega328P do Uno em um formato compacto e adequado para protoboard - ótimo para montagens apertadas e prototipagem em que o espaço importa.

O que você vai percorrer:

Display de 7 Segmentos e 4 Dígitos com TM1637 para Arduino Nano

Hardware Necessário

1×Official Arduino Nano
1×Alternatively, DIYables Nano V3.0 Development Board
1×Cabo USB A para Mini-B
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

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.

O Que É o Módulo de Display TM1637?

O TM1637 é um chip driver projetado para displays LED de 7 segmentos. Ele cuida da multiplexação dos dígitos internamente e se comunica com o microcontrolador por apenas dois fios - CLK e DIO. O chip tem a sua própria memória de display, então, depois que você grava os dados nele, o display permanece estável sem nenhum loop de atualização no seu código.

O que o módulo oferece:

  • 4 dígitos, cada um com 7 segmentos mais um ponto decimal
  • Separador de dois pontos entre o segundo e o terceiro dígito para exibição no estilo de relógio
  • 8 níveis de brilho que você pode definir pelo código
  • Interface de 2 fios compatível com 3.3V e 5V
  • Memória de display integrada - configure e esqueça

Mapeamento dos Pinos

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

CLK e DIO podem ir a quaisquer pinos digitais do Nano. Os exemplos abaixo usam os pinos D2 e D3.

Diagrama de Ligação

Ligue o módulo TM1637 ao Arduino Nano:

  • 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 com TM1637 e Arduino Nano

This image is created using Fritzing. Click to enlarge image

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

Configurando a Biblioteca

  1. Conecte o Arduino Nano ao seu computador com um cabo USB Mini-B.
  2. Abra a Arduino IDE. Defina a placa como Arduino Nano e selecione a porta correspondente.
  3. Vá ao painel Libraries à esquerda.
  4. Digite "DIYables_4Digit7Segment_TM1637" na caixa de pesquisa. Procure a biblioteca da DIYables.
  5. Clique em Install.
Biblioteca do display de 7 segmentos e 4 dígitos com TM1637 para Arduino

A biblioteca é autossuficiente - não há dependências extras para instalar.

Nota: Se o seu Nano usa um bootloader mais antigo, selecione ATmega328P (Old Bootloader) em Processor no menu Tools.

Código Base

Todo sketch criado com a biblioteca DIYables_4Digit7Segment_TM1637 parte desta base:

#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() { }

Passe ao construtor os números dos pinos CLK e DIO, chame begin() uma vez no setup(), e o display estará pronto para receber dados.

Código Arduino Nano - Exibir Números Inteiros

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

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

Acompanhe

  • Ligue o módulo TM1637 ao Nano como mostrado no diagrama de ligação acima.
  • Conecte o Nano ao seu computador com um cabo USB Mini-B.
  • Abra a Arduino IDE, escolha a placa e a porta, cole o código e clique em Upload.
  • Abra o Serial Monitor para ver a saída.

O display vai percorrer os números 0, 42, 1234, -5, -123, 9999 e, depois, mostrar 42 com zeros à esquerda como "0042".

Visão Geral dos Métodos

Método Explicação Exemplo de Chamada
print(int) Exibe um inteiro (-999 a 9999) display.print(1234)
print(int, true) Exibe com zeros à esquerda display.print(42, true)
clear() Limpa o display display.clear()

Código Arduino Nano - Exibir Texto e Temperatura

Este exemplo mostra como exibir strings de texto e uma temperatura formatada com o símbolo de grau.

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

Acompanhe

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

O display percorre "HELP", "Hi", "COOL", "done" e, depois, mostra as temperaturas "25°C" e "72°F".

Visão Geral dos Métodos

Método Explicação Exemplo de Chamada
print(const char*) Exibe uma string de texto (até 4 caracteres) display.print("HELP")
printTemperature(int, char) Exibe a temperatura com grau e unidade display.printTemperature(25, 'C')
DEGREE Constante do símbolo de grau display.DEGREE

Código Arduino Nano - Exibir Hora com Dois Pontos Piscando

Este exemplo mostra uma hora no estilo de relógio, com os dois pontos piscando a cada 500 milissegundos.

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

Acompanhe

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

Visão Geral dos Métodos

Método Explicação Exemplo de Chamada
printTime(int, int) Exibe a hora HHMM com dois pontos display.printTime(12, 30)
printTime(int, int, bool) Exibe a hora, controlando os dois pontos ligados/desligados display.printTime(12, 30, false)

Código Arduino Nano - Fazer o Display Piscar

Este exemplo mostra como usar off() e on() para fazer valores piscarem no display.

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

Acompanhe

  • Faça o upload do código e observe o display.

"1234" pisca cinco vezes, faz uma pausa, depois "HELP" pisca cinco vezes, e o ciclo se repete.

Visão Geral dos Métodos

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

Código Arduino Nano - Controle de Dígitos Individuais

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

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

Acompanhe

  • Faça o upload e observe o display percorrer diferentes combinações.

Visão Geral dos Métodos

Método Explicação Exemplo de Chamada
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 brutos na posição 0-3 display.setSegments(0, 0x76)

Solução de Problemas

  1. O display não mostra nada - Verifique a ligação. Confirme que CLK e DIO estão conectados aos pinos corretos do Nano e que o VCC vai ao 5V.
  2. Aparecem caracteres errados - CLK e DIO provavelmente estão trocados. Troque os dois fios.
  3. Display muito fraco ou muito brilhante - Use setBrightness(level) com um valor de 0 a 7.
  4. Erro de compilação sobre biblioteca ausente - Instale a DIYables_4Digit7Segment_TM1637 pelo Gerenciador de Bibliotecas da Arduino.
  5. O upload falha com "not in sync" - Tente selecionar ATmega328P (Old Bootloader) no menu Processor.

Plataformas Suportadas

A biblioteca usa apenas 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!