Continuando o assunto display 7 segmentos, abordado no meu post anterior, hoje usar o Max7219 com display 7 segmentos, e você vai ver que é muito fácil controlar esse display através do Arduino.

Arduino - CI Max7219 - Display 7 segmentos

O controlador Max7219

O Max7219 é um CI driver display, isto é, um controlador feito especialmente para trabalhar com displays, tanto os de 7 segmentos, como as matrizes de led. Ele trabalha com displays de catodo comum e a comunicação com o Arduino utiliza apenas 3 portas da placa (veja que no exemplo do post anterior, eu usei 8 portas).

Além disso, com um único chip MAX7219 é possível controlar até 8 displays de 7 segmentos utilizando as mesmas 3 portas do Arduino.

MAX7219 controlando 8 displays

Outra vantagem é o uso de apenas um resistor para todos os segmentos, entre os pinos 19 e 18, conforme mostra o datasheet do CI:

Circuito Max7219 com display 7 segmentos

A montagem do circuito requer atenção para não danificar o CI. Repare que existe uma marcação no canto superior esquerdo, mostrando o pino 1 conforme a imagem abaixo:

Pinagem Max7219

Ligamos os pinos SEG A, SEG B,etc. , aos pinos do display, segmentos A, B, C, etc. Como neste exemplo temos apenas 1 display, vamos ligar o comum – pino 8 – ao pino DIG 0 do CI. Siga a tabela abaixo:

Tabela ligacao Max7219 - Display - Arduino
Circuito Max7219 Display 7 segmentos

Para o programa exemplo, vamos utilizar a biblioteca LedControl, que você pode encontrar aqui, ou neste link.

Instalada a biblioteca, carregue o seguinte programa no Arduino:

// Programa : Contador display 7 segmentos usando CI Max7219
// Alteracoes / comentarios  : Arduino e Cia
// Baseado no programa exemplo da biblioteca LedControl

#include "LedControl.h" //Carrega a biblioteca LedControl

// Pino 4 do Arduino ao pino 1 (DIN) do CI
// Pino 5 do Arduino ao pino 13 (CLK) do CI
// Pino 6 do Arduino ao pino 12 (LOAD) do CI
// Ultimo parametro se refere a qtde de MAX7219 no circuito

LedControl lc=LedControl(4,5,6,1); 

boolean pontodecimal;  //Armazena o estado do ponto decimal (Lig/Desl)

void setup() 
{ 
  // Inicializa o Max7219
  lc.shutdown(0,false); // Habilita o display 
  // Define o nivel de luminosidade (0 minimo, 15  maximo)
  lc.setIntensity(0,10); 
  lc.clearDisplay(0); // Apaga o display
  Serial.begin(9600); // Inicializa a serial
  pontodecimal = true;  //Define o ponto decimal como LIGADO
} 

void loop() 
{ 
  for(int i=0; i < 10 ; i++)  //Loop variando valor de i de 0 a 9
  { 
    lc.setDigit(0,0,i,pontodecimal);  //Mostra o valor de i no display 
    Serial.println(i);
    pontodecimal = !pontodecimal; //Inverte o estado do ponto decimal
    delay(1000);  //Aguarda 1 segundo e mostra o próximo valor
  } 
delay(1000);  //Aguarda 1 segundo e reinicia a contagem
}

Este programa configura as portas a serem utilizadas com os pinos DIN, CLK e LOAD do CI, inicializa o display e mostra os valores de 0 a 9 por meio de um loop. Como costumo fazer, mostro também o valor no monitor serial, para fins de acompanhamento e análise caso ocorra algum problema na ligação do circuito.

No post Controlando 2 displays de 7 segmentos com o Max7219, vamos utilizar este circuito como base, e usar esse CI para controlar 2 displays.

Gostou? Confira outros posts usando display 7 segmentos aqui mesmo no Arduino e Cia!

Avalie este post!