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:
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!
