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