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!