Arduino Nano ESP32 - Display de 7 Segmentos e 4 Dígitos com 74HC595

Bem-vindo a este workshop prático em que conectamos um módulo de display de 7 segmentos e 4 dígitos com 74HC595 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.

Neste workshop você vai:

Display de 7 Segmentos e 4 Dígitos 74HC595 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×74HC595 4-digit 7-segment Display
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 Display de 7 Segmentos e 4 Dígitos com 74HC595

Este módulo compacto combina quatro dígitos de 7 segmentos com um registrador de deslocamento 74HC595. Os dados são deslocados em série por 3 pinos e depois travados nos segmentos de LED. A biblioteca cuida da multiplexação dos dígitos automaticamente - você define um valor com print() e o display continua mostrando esse valor.

Função Pino Descrição
SCLK (SH_CP) Clock Serial Envia os bits de dados para o registrador
RCLK (ST_CP) Clock do Registrador Trava os dados deslocados nas saídas
DIO (DS) Entrada de Dados Linha de dados serial
VCC Alimentação 3.3V ou 5V
GND Terra Terra comum

Nota: O Arduino Nano ESP32 opera em 3.3V. O módulo 74HC595 funciona em 3.3V sem problemas.

Diagrama de Ligação

Conecte o display ao Nano ESP32:

  • SCLK ao D7
  • RCLK ao D6
  • DIO ao D5
  • VCC ao 3.3V
  • GND ao GND
Diagrama de ligação do Display de 7 Segmentos e 4 Dígitos 74HC595 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_74HC595" no campo de busca. Encontre a entrada da DIYables.
  5. Clique em Install. Selecione a versão 2.0.0 ou posterior.
Biblioteca do Display de 7 Segmentos e 4 Dígitos 74HC595 do Arduino Nano ESP32

Biblioteca independente - nada mais para instalar.

Sketch Inicial

O código mínimo necessário para começar:

#include <DIYables_4Digit7Segment_74HC595.h> #define SCLK_PIN D7 #define RCLK_PIN D6 #define DIO_PIN D5 DIYables_4Digit7Segment_74HC595 display(SCLK_PIN, RCLK_PIN, DIO_PIN); void setup() { display.begin(); display.print(1234); } void loop() { display.loop(); }

begin() configura os pinos. loop() cuida da multiplexação - chame-a com a maior frequência possível. Use display.delay() em vez de delay() para manter o display ativo durante as esperas.

Workshop - Mostrar Inteiros

Mostra inteiros de -999 a 9999, incluindo saída preenchida 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-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // Pin configuration - change these to match your wiring #define SCLK_PIN D7 // The Arduino Nano ESP32 pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN D6 // The Arduino Nano ESP32 pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN D5 // The Arduino Nano ESP32 pin connected to the Data (DS) pin of 7-segment display DIYables_4Digit7Segment_74HC595 display(SCLK_PIN, RCLK_PIN, DIO_PIN); int numbers[] = {0, 42, 1234, -5, -123, 9999}; int numCount = 6; int currentIndex = 0; bool showZeroPad = false; unsigned long lastChange = 0; void setup() { Serial.begin(9600); display.begin(); Serial.println("4-Digit 7-Segment 74HC595 - Integer Example"); } void loop() { display.loop(); // Must be called frequently to refresh the display if (millis() - lastChange >= 2000) { lastChange = millis(); if (!showZeroPad) { display.print(numbers[currentIndex]); Serial.print("Displaying: "); Serial.println(numbers[currentIndex]); currentIndex++; if (currentIndex >= numCount) { currentIndex = 0; showZeroPad = true; } } else { display.print(42, true); // Shows "0042" Serial.println("Displaying: 0042 (zero-padded)"); showZeroPad = false; } } }

Mão na Massa

  • Ligue o display ao Nano ESP32 como descrito acima.
  • 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 0042 (preenchido com zeros).

Referência de Métodos

Método Ação Sintaxe
print(int) Mostra um inteiro display.print(1234)
print(int, true) Inteiro com preenchimento de zeros display.print(42, true)
loop() Atualiza o display display.loop()

Workshop - Mostrar Floats

Números de ponto flutuante com casas decimais automáticas e fixas.

/* * 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-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // Pin configuration - change these to match your wiring #define SCLK_PIN D7 // The Arduino Nano ESP32 pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN D6 // The Arduino Nano ESP32 pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN D5 // The Arduino Nano ESP32 pin connected to the Data (DS) pin of 7-segment display DIYables_4Digit7Segment_74HC595 display(SCLK_PIN, RCLK_PIN, DIO_PIN); void setup() { Serial.begin(9600); display.begin(); Serial.println("4-Digit 7-Segment 74HC595 - Float Example"); } void loop() { // Auto decimal placement display.print(1.5); // Shows " 1.5" Serial.println("Auto decimal: 1.5"); display.delay(2000); display.print(12.34); // Shows "12.34" Serial.println("Auto decimal: 12.34"); display.delay(2000); display.print(3.141); // Shows "3.141" Serial.println("Auto decimal: 3.141"); display.delay(2000); display.print(-1.2); // Shows "-1.20" Serial.println("Auto decimal: -1.20"); display.delay(2000); display.print(0.5); // Shows " 0.5" Serial.println("Auto decimal: 0.5"); display.delay(2000); // Fixed decimal places display.print(23.5, 1); // 1 decimal place: shows "23.5" Serial.println("1 decimal place: 23.5"); display.delay(2000); display.print(1.5, 2); // 2 decimal places: shows "1.50" Serial.println("2 decimal places: 1.50"); display.delay(2000); // Zero-padded display.print(1.5, 2, true); // Shows "01.50" Serial.println("2 decimal places, zero-padded: 01.50"); display.delay(2000); }

Mão na Massa

  • Faça o upload do código e abra o Serial Monitor.

Mostra floats com decimais automáticos, depois com 1 e 2 casas decimais fixas, e preenchidos com zeros.

Workshop - Texto e Temperatura

Textos, símbolo de grau e exibição de temperatura.

/* * 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-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // Pin configuration - change these to match your wiring #define SCLK_PIN D7 // The Arduino Nano ESP32 pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN D6 // The Arduino Nano ESP32 pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN D5 // The Arduino Nano ESP32 pin connected to the Data (DS) pin of 7-segment display DIYables_4Digit7Segment_74HC595 display(SCLK_PIN, RCLK_PIN, DIO_PIN); const char* texts[] = {"HELP", "Hi", "COOL", "done"}; int textCount = 4; int currentIndex = 0; int phase = 0; unsigned long lastChange = 0; void setup() { Serial.begin(9600); display.begin(); Serial.println("4-Digit 7-Segment 74HC595 - Text and Degree Example"); } void loop() { display.loop(); // Must be called frequently to refresh the display if (millis() - lastChange >= 2000) { lastChange = millis(); if (phase == 0) { // Display text strings display.print(texts[currentIndex]); Serial.print("Text: "); Serial.println(texts[currentIndex]); currentIndex++; if (currentIndex >= textCount) { currentIndex = 0; phase = 1; } } else if (phase == 1) { // Display temperature 25 degrees C display.printTemperature(25, 'C'); Serial.println("Temperature: 25 C"); phase = 2; } else if (phase == 2) { // Display temperature 72 degrees F display.printTemperature(72, 'F'); Serial.println("Temperature: 72 F"); phase = 3; } else if (phase == 3) { // Display degree symbol using string with DEGREE_CHAR constant char degStr[5]; degStr[0] = '2'; degStr[1] = '5'; degStr[2] = DEGREE_CHAR; degStr[3] = 'C'; degStr[4] = '\0'; display.print(degStr); Serial.println("String with degree: 25 deg C"); phase = 4; } else { // Display string with dots display.print("1.2.3.4"); Serial.println("Dots: 1.2.3.4"); phase = 0; } } }

Mão na Massa

  • Faça o upload do código e abra o Serial Monitor.

Mostra "HELP", "Hi", "COOL", "done", temperaturas e pontos embutidos.

Workshop - Hora

HH.MM no estilo de relógio com ponto piscante.

/* * 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-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // Pin configuration - change these to match your wiring #define SCLK_PIN D7 // The Arduino Nano ESP32 pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN D6 // The Arduino Nano ESP32 pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN D5 // The Arduino Nano ESP32 pin connected to the Data (DS) pin of 7-segment display DIYables_4Digit7Segment_74HC595 display(SCLK_PIN, RCLK_PIN, DIO_PIN); int hours = 12; int minutes = 30; bool colonOn = true; unsigned long lastToggle = 0; void setup() { Serial.begin(9600); display.begin(); Serial.println("4-Digit 7-Segment 74HC595 - Time Example"); Serial.println("Displaying 12:30 with blinking dot separator"); } void loop() { display.loop(); // Must be called frequently to refresh the display if (millis() - lastToggle >= 500) { lastToggle = millis(); display.printTime(hours, minutes, colonOn); colonOn = !colonOn; // Toggle dot separator every 500ms for blinking effect } }

Mão na Massa

  • Faça o upload do código e abra o Serial Monitor.

Exibe 12.30 com o ponto piscando a cada 500ms.

Workshop - Piscar

Pisca o conteúdo do display, ligando e desligando.

/* * 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-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // Pin configuration - change these to match your wiring #define SCLK_PIN D7 // The Arduino Nano ESP32 pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN D6 // The Arduino Nano ESP32 pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN D5 // The Arduino Nano ESP32 pin connected to the Data (DS) pin of 7-segment display DIYables_4Digit7Segment_74HC595 display(SCLK_PIN, RCLK_PIN, DIO_PIN); // States: 0 = blink int, 1 = blink float, 2 = blink text int phase = 0; int blinkCount = 0; bool isOn = true; unsigned long lastAction = 0; unsigned long pauseUntil = 0; void setup() { Serial.begin(9600); display.begin(); Serial.println("4-Digit 7-Segment 74HC595 - Blink Example"); display.print(1234); Serial.println("Blinking: 1234"); } void loop() { display.loop(); // Must be called frequently to refresh the display unsigned long now = millis(); // Pause between phases if (now < pauseUntil) return; if (now - lastAction >= 300) { lastAction = now; if (isOn) { display.off(); isOn = false; } else { display.on(); isOn = true; blinkCount++; if (blinkCount >= 5) { blinkCount = 0; pauseUntil = now + 1000; phase++; if (phase > 2) phase = 0; switch (phase) { case 0: display.print(1234); Serial.println("Blinking: 1234"); break; case 1: display.print(12.34); Serial.println("Blinking: 12.34"); break; case 2: display.print("HELP"); Serial.println("Blinking: HELP"); break; } } } } }

Mão na Massa

  • Faça o upload do código e abra o Serial Monitor.

Pisca 1234, depois 12.34 e depois "HELP" - cinco vezes cada.

Solução de Problemas

Problema Causa Possível Solução
Display em branco Problema na ligação Verifique as conexões de VCC, GND e dos pinos de dados
Caracteres errados Incompatibilidade de ânodo/cátodo Passe false ao construtor para cátodo comum
Cintilando delay() bloqueando o loop() Use display.delay() no lugar
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!