O módulo display 4 dígitos 74HC595 é um módulo que usa 4 displays de 7 segmentos, onde podemos mostrar números e letras, e que usa apenas 3 pinos para conexão ao microcontrolador.

Contador com módulo display 4 dígitos 74HC595

Neste post vamos usar o módulo 74HC595 para montar um contador com 2 push-buttons, que você pode usar como base para montar seu próprio projeto.

O módulo display 7 segmentos 74HC595

Na imagem abaixo podemos ver o módulo display 4 dígitos com 74HC595, que tem no lado esquerdo 5 pinos de entrada, sendo 3 de controle e 2 de alimentação. No lado oposto, temos os pinos de saída, que permitem que você interligue módulos idênticos:

Módulo display 4 dígitos 74HC595

O controle dos segmentos dos dígitos do display é feito por dois CI´s 74HC595, que são registradores de deslocamento utilizados para expandir as portas do microcontrolador. 

Módulo display 74HC595 - CI

Com o 74HC595, você usa 3 pinos de controle para enviar dados para as 8 portas de saída do CI, com a vantagem de poder utilizar vários desses módulos ao mesmo tempo.

Circuito display 4 dígitos com 74HC595

Para ligar o módulo display 4 dígitos 74HC595 ao Arduino e montar o nosso contador, vamos usar os pinos digitais 5, 6 e 7, que serão ligados no módulo nos pinos DIO, RCLK, e SCLK, respectivamente. 

Para os botões do contador, vamos usar dois push-buttons ligados ao pino 2 (para aumentar o contador), e ao pino 3 (para diminuir).

Circuito Arduino Módulo display 74HC595

Os resistores tem a função de pull-down, e foram usados resistores de 330 ohms.

Programa contador com 74HC595

O programa abaixo utiliza as bibliotecas TM74HC595Display (download) e TimerOne (download). Descompacte a pasta e coloque as bibliotecas na pasta LIBRARIES da IDE do Arduino.

No setup() foram definidos os endereços para os dígitos de 0 a 9 que serão utilizados no programa, e também um pequeno teste com os 4 dígitos, mostrando os números de 1 a 4 no display.

Na seção loop(), são lidos os valores das portas do botões (2 e 3), que quando acionadas aumentam ou diminuem o valor do contador no display.

//Programa: Contador com modulo display 7 digitos 74HC595
//Autor: Arduino e Cia

#include <TM74HC595Display.h>
#include <TimerOne.h>

//Pinos de conexao ao modulo
int PINO_SCLK = 7;
int PINO_RCLK = 6;
int PINO_DIO = 5;

//Pinos de conexao push-button
int PINO_UP = 2;
int PINO_DOWN = 3;

int contador = 0;

TM74HC595Display disp(PINO_SCLK, PINO_RCLK, PINO_DIO);
unsigned char LED_0F[10];

void setup()
{
  //Definicao dos digitos de 0 a 9
  LED_0F[0] = 0xC0; //0
  LED_0F[1] = 0xF9; //1
  LED_0F[2] = 0xA4; //2
  LED_0F[3] = 0xB0; //3
  LED_0F[4] = 0x99; //4
  LED_0F[5] = 0x92; //5
  LED_0F[6] = 0x82; //6
  LED_0F[7] = 0xF8; //7
  LED_0F[8] = 0x80; //8
  LED_0F[9] = 0x90; //9

  Timer1.initialize(1500); // set a timer of length 1500
  Timer1.attachInterrupt(timerIsr); // attach the service routine here

  //Testes iniciais
  //Envia o numero 1 para o primeiro digito
  disp.set(LED_0F[1], 3);
  delay(1000);
  //Apaga o display
  disp.clear();

  //Envia o numero 2 para o primeiro digito
  disp.set(LED_0F[2], 2);
  delay(1000);
  disp.clear();

  //Envia o numero 3 para o primeiro digito
  disp.set(LED_0F[3], 1);
  delay(1000);
  disp.clear();

  //Envia o numero 4 para o primeiro digito
  disp.set(LED_0F[4], 0);
  delay(1000);
  disp.clear();
}

void loop()
{
  //Verifica se o botao aumentar contador foi acionado
  int up = digitalRead(PINO_UP);
  if (up == 1)
  {
    contador++;
    while (digitalRead(PINO_UP) == 1) {
      delay(10);
    }
    //disp.clear();
  }

  //Verifica se o botao diminuir contador foi acionado
  int down = digitalRead(PINO_DOWN);
  if (down == 1)
  {
    contador--;
    while (digitalRead(PINO_DOWN) == 1) {
      delay(10);
    }
    //disp.clear();
  }
  disp.clear();

  //Mostra o valor do contador no display
  disp.digit4(contador);
  delay(10);
}

void timerIsr()
{
  disp.timerIsr();
}

Para mostrar o valor da variável contador no display, utilizamos o comando disp.digit4(), que vai ajustando os dígitos de acordo com o valor da variável (ocupando apenas os dígitos necessários no display).

Você também pode utilizar o comando disp.set() para enviar um valor para um dígito específico, ou o comando disp.digit4showZero() para mostrar o 0 nos dígitos à esquerda. 

Você pode ver como utilizar esses comandos carregando o programa de exemplo da própria biblioteca TM74HC595Display, que mostra inclusive como usar letras nesse display. 🙂

2.9/5 - (7 votes)