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

Este passo a passo leva você, etapa por etapa, ao uso de um display de 7 segmentos e 4 dígitos com registrador de deslocamento 74HC595 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.

O que você vai percorrer:

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

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

Um display LED de quatro dígitos controlado por um registrador de deslocamento 74HC595. Apenas 3 fios do Nano são necessários para controlar todos os dígitos e pontos decimais. O registrador de deslocamento converte dados seriais em saídas paralelas de segmentos, e a biblioteca cuida da multiplexação de cada dígito em sequência.

Função Pino Descrição
SCLK (SH_CP) Clock Serial Envia os bits de dados para o registrador de deslocamento
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 GND GND comum

Diagrama de Ligação

Ligue o módulo de display ao Nano:

  • SCLK ao D7
  • RCLK ao D6
  • DIO ao D5
  • VCC ao 5V
  • GND ao GND

Tanto o Nano quanto o módulo de display cabem bem em uma protoboard, o que deixa a ligação simples.

Diagrama de ligação do display de 7 segmentos e 4 dígitos com 74HC595 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_74HC595" na caixa de pesquisa. Procure a biblioteca 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 com 74HC595 para Arduino Nano

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_74HC595 parte desta base:

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

Chame begin() uma vez e depois mantenha display.loop() em execução. O valor do display é definido com print() e permanece até ser alterado. Use display.delay() em vez de delay() para manter tudo visível durante as esperas.

Código Arduino Nano - Exibir Inteiros

Mostra uma série de inteiros 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-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 Nano pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN 6 // The Arduino Nano pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN 5 // The Arduino Nano 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; } } }

Acompanhe

  • Ligue o display ao Nano como mostrado 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.

Percorre 0, 42, 1234, -5, -123, 9999 e, depois, 0042 com zeros à esquerda.

Visão Geral dos Métodos

Método Explicação Exemplo de Chamada
print(int) Mostra um inteiro (-999 a 9999) display.print(1234)
print(int, true) Inteiro com zeros à esquerda display.print(42, true)
loop() Atualiza o display multiplexado display.loop()

Código Arduino Nano - Exibir Floats

Demonstra floats com casas decimais automáticas e fixas.

/* * 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-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 Nano pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN 6 // The Arduino Nano pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN 5 // The Arduino Nano 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); }

Acompanhe

  • Faça o upload do sketch e abra o Serial Monitor.

Mostra floats com decimais automáticos, depois com 1 e 2 casas fixas e, por fim, com zeros à esquerda.

Código Arduino Nano - Texto e Temperatura

Mostra texto, o símbolo de grau e valores de temperatura.

/* * 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-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 Nano pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN 6 // The Arduino Nano pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN 5 // The Arduino Nano 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; } } }

Acompanhe

  • Faça o upload do sketch e abra o Serial Monitor.

Exibe "HELP", "Hi", "COOL", "done", depois valores de temperatura e pontos inline.

Código Arduino Nano - Hora

HH.MM no estilo de relógio, com separador piscando.

/* * 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-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 Nano pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN 6 // The Arduino Nano pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN 5 // The Arduino Nano 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 } }

Acompanhe

  • Faça o upload do sketch e abra o Serial Monitor.

Mostra 12.30 com o ponto piscando a cada 500ms.

Código Arduino Nano - Piscar

Faz diferentes valores do display piscarem, ligando e desligando.

/* * 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-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 Nano pin connected to the Serial clock pin of 7-segment display #define RCLK_PIN 6 // The Arduino Nano pin connected to the Register clock / latch pin of 7-segment display #define DIO_PIN 5 // The Arduino Nano 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; } } } } }

Acompanhe

  • Faça o upload do sketch e abra o Serial Monitor.

Faz piscar 1234, depois 12.34 e depois "HELP" - cinco piscadas cada.

Solução de Problemas

  1. O display fica em branco - Verifique a ligação. Confirme que os números dos pinos SCLK, RCLK e DIO correspondem ao código. Confirme que begin() e loop() estão nos lugares certos.
  2. Caracteres errados aparecem - O padrão é ânodo comum. Passe false como 4º argumento do construtor para módulos de cátodo comum.
  3. Display cintilando - Evite delay() no seu código. Use display.delay() no lugar.
  4. 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, millis) 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!