Arduino - Display de 7 Segmentos de 4 Dígitos 74HC595

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

Arduino Display de 7 Segmentos de 4 Dígitos 74HC595

Sobre o Display de 7 Segmentos de 4 Dígitos com 74HC595

O módulo de display de 7 segmentos de 4 dígitos com 74HC595 é um display compacto que usa um registrador de deslocamento para reduzir o número de pinos necessários do microcontrolador. Em vez de precisar de 12 ou mais pinos, este módulo usa apenas 3 pinos de dados (SCLK, RCLK, DIO) para controlar os 4 dígitos e seus pontos decimais.

Cada dígito é formado por 7 segmentos de LED (nomeados de A a G) mais um ponto decimal (DP). Ao acender diferentes combinações de segmentos, o display pode mostrar os dígitos de 0 a 9, várias letras e caracteres especiais.

O módulo suporta as configurações de ânodo comum e de cátodo comum. Este tutorial usa a versão de ânodo comum.

Mapeamento de Pinos

Função Pino Descrição
SCLK (SH_CP) Clock Serial Sinal de clock para deslocar os dados
RCLK (ST_CP) Clock do Registrador Sinal de trava (latch) para enviar os dados deslocados à saída
DIO (DS) Entrada de Dados Entrada de dados serial
VCC Alimentação 3.3V ou 5V
GND Terra Conexão de terra

Diagrama de Ligação

Conecte o módulo de display 74HC595 ao Arduino da seguinte forma:

  • SCLK ao pino 7 do Arduino
  • RCLK ao pino 6 do Arduino
  • DIO ao pino 5 do Arduino
  • VCC ao 5V
  • GND ao GND
Diagrama de ligação do Arduino com Display de 7 Segmentos de 4 Dígitos 74HC595

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_74HC595" e encontre a biblioteca DIYables_4Digit7Segment_74HC595 da DIYables.
  • Clique no botão Install para instalar a biblioteca. Selecione a versão 2.0.0 ou mais recente.
Biblioteca do Display de 7 Segmentos de 4 Dígitos 74HC595 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_74HC595 segue esta estrutura básica:

#include <DIYables_4Digit7Segment_74HC595.h> #define SCLK_PIN 7 #define RCLK_PIN 6 #define DIO_PIN 5 DIYables_4Digit7Segment_74HC595 display(SCLK_PIN, RCLK_PIN, DIO_PIN); void setup() { display.begin(); display.print(1234); // Set what to display } void loop() { display.loop(); // Must be called frequently to refresh the display }

O display usa multiplexação para mostrar os 4 dígitos. O método display.loop() cuida do ciclo de atualização e deve ser chamado com frequência na sua função loop(). Você define o conteúdo uma vez com print(), e ele continua no display enquanto loop() continuar rodando.

Se o seu código tem delays longos, use display.delay(ms) em vez do delay(ms) padrão para manter o display atualizado durante a espera.

Código Arduino - Mostrar Números Inteiros

Este exemplo mostra como exibir números inteiros no display de 7 segmentos, incluindo números negativos e preenchimento com 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-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // Pin configuration - change these to match your wiring #define SCLK_PIN 7 // The Arduino pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN 6 // The Arduino pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN 5 // The Arduino 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; } } }

Passos Rápidos

  • Ligue o módulo de display ao 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 passa por vários números inteiros: 0, 42, 1234, -5, -123, 9999 e depois mostra 42 com preenchimento de zeros (0042). Cada valor fica no display por 2 segundos.

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 um inteiro com zeros à esquerda display.print(42, true) mostra 0042
loop() Atualiza o display (chame no loop) display.loop()

Código Arduino - Mostrar Números Decimais

Este exemplo demonstra como exibir números de ponto flutuante com casas decimais automáticas e manuais.

/* * 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-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // Pin configuration - change these to match your wiring #define SCLK_PIN 7 // The Arduino pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN 6 // The Arduino pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN 5 // The Arduino 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); }

Passos Rápidos

  • Ligue o módulo de display ao Arduino como mostrado 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 mostra vários valores decimais. Com casas decimais automáticas, a biblioteca escolhe o melhor ajuste. Você também pode definir um número fixo de casas decimais e ativar o preenchimento com zeros.

Resumo da API

Método Descrição Exemplo
print(double) Mostra um decimal com casas automáticas display.print(12.34)
print(double, dp) Mostra um decimal com dp casas decimais display.print(1.5, 2) mostra 1.50
print(double, dp, true) Decimal com casas e preenchimento de zeros display.print(1.5, 2, true)

Código Arduino - Mostrar Texto e Temperatura

Este exemplo mostra como exibir textos, o símbolo de grau e valores de temperatura.

/* * 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-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // Pin configuration - change these to match your wiring #define SCLK_PIN 7 // The Arduino pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN 6 // The Arduino pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN 5 // The Arduino 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; } } }

Passos Rápidos

  • Ligue o módulo de display ao Arduino como mostrado 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 mostra textos como "HELP", "Hi", "COOL" e "done", depois os valores de temperatura 25 graus C e 72 graus F, depois um texto com a constante de grau e, por fim, pontos em todos os dígitos (1.2.3.4).

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_CHAR Constante para o símbolo de grau display.print("25" + degStr)

Código Arduino - Mostrar a Hora

Este exemplo mostra a hora no estilo de relógio, no formato HH.MM, com um ponto separador piscando.

/* * 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-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // Pin configuration - change these to match your wiring #define SCLK_PIN 7 // The Arduino pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN 6 // The Arduino pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN 5 // The Arduino 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 } }

Passos Rápidos

  • Ligue o módulo de display ao Arduino como mostrado 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 mostra 12.30 com o ponto entre o segundo e o terceiro dígito piscando a cada 500ms, criando uma aparência de relógio.

Código Arduino - Fazer o Display Piscar

Este exemplo faz diferentes valores piscarem, ligando e desligando com 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-74hc595-4-digit-7-segment-display */ #include <DIYables_4Digit7Segment_74HC595.h> // Pin configuration - change these to match your wiring #define SCLK_PIN 7 // The Arduino pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN 6 // The Arduino pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN 5 // The Arduino 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; } } } } }

Passos Rápidos

  • Ligue o módulo de display ao Arduino como mostrado 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 faz piscar o inteiro 1234, depois o decimal 12.34 e depois o texto "HELP" - cada um pisca 5 vezes antes de passar para o próximo.

Resumo da API

Método Descrição Exemplo
off() Desliga o display display.off()
on() Liga o display novamente display.on()
delay(ms) Delay que mantém o display atualizado display.delay(1000)
yield() Uma única chamada de atualização para loops longos display.yield()

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 se VCC e GND estão conectados. Confirme se os pinos SCLK, RCLK e DIO correspondem ao seu código. Certifique-se de que display.begin() é chamado em setup() e display.loop() é chamado em loop().
  • Os segmentos mostram caracteres errados: Confirme se o seu módulo é de ânodo comum ou de cátodo comum. O padrão é ânodo comum. Para cátodo comum, passe false como quarto parâmetro: DIYables_4Digit7Segment_74HC595 display(7, 6, 5, false).
  • O display pisca ou fica apagado: O display.loop() deve ser chamado com frequência. Evite usar delay() no seu código - use display.delay() em vez disso para manter o display atualizado.

Plataformas Suportadas

A biblioteca usa apenas APIs padrão do Arduino (pinMode, digitalWrite, millis) 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!