Max7219 com display 7 segmentos
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!
Boa tarde, leio e releio, mas até agora não consegui fazer com que um loop não intefira noutra porta, ou seja, coloco (programo) a porta 13 para piscar e a porta 8 para gerar um tom em determinado momento, mas quando entra o tom, o led para de piscar….desculpe mas não sou programador, por isso a dúvida.
Boa tarde Ronaldo !
Provavelmente o seu programa precise de algum ajuste. Se preferir, use o formulário de contato e eu vejo no que posso te ajudar. Abraço e obrigado pela visita !
Olá, tudo bom?
Primeiramente parabéns pelo post.
Estou com um problema e gostaria de sua ajuda.
Tenho um Display 7 segmentos Anodo Comum (CMI 2302300), tentei reproduzir seu tutorial com ele, porém não obtive sucesso. Acredito que o tutorial tenha sido feito com um Catodo Comum, correto? Você pode me ajudar?
Desde já agradeço.
Boa tarde Vinicius,
Estou sem display de catodo comum para fazer testes, mas assim que arrumar um vou criar um post sobre ele.
Abraço.
Olá Vinicius, faça como eu, eu uso aquela plaquinha com max7219 que controla 8 displays , assim você não precisa ficar ligando aquele monte de fio, só liga 5 da placa até o Arduino, bem prático, rápido, flw
Só para efeito de ajuda, o display que é usado na placa do Arduino é ANODO comum, porem o seu serve sim
perdão, no Arduino não, e sim na placa do MAX 7219 de 8 digitos
olá boa tarde Arduino e cia obrigado pelo post. de pessoas como você é que o brasil precisa . gostaria de saber se consigo controlar um big display de led na medida de 40 cm de altura x 25 cm de largura onde um unico digito tem 210 leds , trinta leds por seguimento . ? se a resposta for não poderia me direcionar se possivel onde eu ache uma biblioteca com algo parecido que eu possa desenvolver ? não entendo nada mas estou em busca de conquistar esta missão.
o display estou eu mesmo desenvolvendo !
olá arduino e cia , eu consigo controlar um (BIG DISPLAY DE LEDS COM ESTE POST /? display com 210 leds 30 leds por seguimento ! um unico display !
Boa tarde,
Poder pode, mas eu preciso encontrar um display desses para me informar melhor. 🙂
Abraço!
como menciono acima eu mesmo estou projetando o display, minha intenção é reproduzir a ordem crescente num sistema para chamar filas, tipo de bancos onde vc aciona um botão e o mesmo sobe em ordem crescente. e o ponto decimal fica estático .
esquema eletrico dos leds é 3 leds por circuito em 12 volts até formar o seguimento neste caso corrigido agora é com 33 leds = 3 X 11 leds . !
segue exemplo:
http://ledcalculator.net/default.aspx?values=12,3.4,20,33,0&lang=pt-BR
abraços agradeço se conseguir me ajudar !!
Estou tentando fazer funcionar com o Arduino 2 displays ligados juntos, porém, nos meus testes na outra página não funcionou, vim pra cá onde pude testar com 1 display só e também não funcionou… O que será que está acontecendo de errado, baixei a biblioteca mais atual do LedControl e não funciona da forma que está neste site. No aguardo, um abraço.
Isso está ERRADO! Eu achei que o problema era no display que estava usando e acabei QUEIMANDO um display de led… muito obrigado por isso…
estão faltando alguns capacitores fechando iset com VCC e outro eletrolitico fechando GND com iset. Os capacitores são 10uF/25V e o capacitor disco de 100n. Você testou esse circuito ou só catou na net e publicou?
Boa noite,
Se está errado deveria ter queimado o meu display também, o que não aconteceu, pelo contrário, funcionou PERFEITAMENTE.
Para o seu conhecimento, eu testo sim os circuitos, e não sou de "catar" na net e publicar, ok ?
Abraço e mais paz na sua vida.
liga nao amigo…site otimo!1111
Oi Nilson!
Muito obrigado e aguardo a sua visita sempre que possível. 🙂
Abraço!
Adilson
alooouu um abraço
Oooouuutro pra vc, Paulo! 😀
Adilson