Neste terceiro artigo sobre o nosso controlador de displays, vamos agora ver como você pode controlar 2 displays 7 segmentos com Max7219 usando Arduino.


No primeiro artigo sobre o display 7 segmentos, vimos como ligar um display diretamente no Arduino. No segundo artigo, ligamos o display à um CI controlador de displays, o Max7219, que por sua vez se comunica com o Arduino utilizando apenas 3 portas da placa.

Conexão 2 displays 7 segmentos com Max7219

Observe no circuito abaixo que a ligação ao segundo display é a mesma, ou seja, os mesmos fios que usei para ligar o CI nos segmentos A,B,C, etc, serão utilizados para ligação aos segmentos A,B,C, etc do 2o. display.

Outra alteração no circuito é a ligação do pino D1 (pino 11 do Max7219) ao pino 8 (comum) do segundo display:

Circuito Max7219 e 2 displays 7 segmentos

Essas são as alterações no circuito, tirando uma eventual mudança na resistência, para controlar a corrente nos displays, e essa é a vantagem de usar um CI como o Max7219 : você controla até 8 displays de 7 segmentos, continua usando apenas uma resistência para controlar a corrente em todos os displays, e o resto do “serviço” é feito pelo programa do Arduino.

E falando em programa, vou utilizar praticamente o mesmo do artigo anterior, fazendo um contador de 0 a 99. A mudança no programa está na linha que envia os dados para o display, com o comando lc.setdigit, que tem a seguinte sintaxe:

lc.setDigit( numero_do_chip, display , valor , pontodecimal )

numero_do_chip = Podemos usar até 8 chips MAX7219 em cascata, e esse número determina para qual chip estamos enviando os dados. Para o primeiro chip, o valor deste parametro será 0, para o segundo chip, o valor será 1, e assim sucessivamente.

display = é o número do display com o qual estamos trabalhando. O valor 0 envia os dados para o primeiro display, o valor 1 envia para o segundo display, e assim sucessivamente

valor = é o valor a ser mostrado no display selecionado

pontodecimal = Recebe o valor “true” se quisermos ligar o ponto decimal do display selecionado, ou “false” se quisermos desligá-lo

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

#include "LedControl.h" 

// 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 utilizados no circuito
LedControl lc=LedControl(4,5,6,1); 

boolean pontodecimal; 

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 = false;  //Define o ponto decimal como DESLIGADO
} 

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

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

5/5 - (1 voto)