Controlando 2 displays 7 segmentos com Max7219
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!
Teria como dar um exemplo de como seria para mostrar números com 3 ou mais dígitos.
Não entendi o que esta linha faz.
lc.setDigit(0,1,i%10,pontodecimal);
Bom dia Luiz !
Estou esperando chegar mais displays e vou montar um projeto com mais dígitos. O que esta linha faz é simplesmente mostrar o ponto decimal no display. Troquei o valor, no final da linha, por uma variavel chamada "pontodecimal". Abraços.
Copiei seu programa e coloquei no arduino mas ele da o seguinte erro:
D:Meusarduino-1.0.4librariesLedControl/LedControl.h:30: error: 'byte' does not name a type
D:Meusarduino-1.0.4librariesLedControl/LedControl.h:52: error: 'byte' does not name a type
D:Meusarduino-1.0.4librariesLedControl/LedControl.h:54: error: 'byte' does not name a type
D:Meusarduino-1.0.4librariesLedControl/LedControl.h:64: error: 'byte' has not been declared
D:Meusarduino-1.0.4librariesLedControl/LedControl.h:64: error: 'byte' has not been declared
D:Meusarduino-1.0.4librariesLedControl/LedControl.h:131: error: 'boolean' has not been declared
D:Meusarduino-1.0.4librariesLedControl/LedControl.h:142: error: 'byte' has not been declared
D:Meusarduino-1.0.4librariesLedControl/LedControl.h:153: error: 'byte' has not been declared
D:Meusarduino-1.0.4librariesLedControl/LedControl.h:164: error: 'byte' has not been declared
D:Meusarduino-1.0.4librariesLedControl/LedControl.h:164: error: 'boolean' has not been declared
D:Meusarduino-1.0.4librariesLedControl/LedControl.h:179: error: 'boolean' has not been declared
saberia me informar qual o problema?
Boa tarde ! Isso parece ser algum erro na instalação da biblioteca. Você saiu e entrou novamente na IDE para ver se o problema persiste ?
Siim, sai e entrei e instalei a biblioteca certo, sabe algum outro jeito de eu ligar o vários 7segmentos usando apenas 3 saídas de sinais do arduino?
Você pode utilizar o CI 74HC595. Qual versão da IDE você está usando ? Eu uso a 1.0.5.
Estou tendo problema com a mesma coisa, ja fiz mudança da biblioteca, reinstalei ela, mas não da certo 🙁
Usei a 1.0.4 e a 1.0.5 e com as duas deu o mesmo erro, tentarei com o 74HC595 mesmo, mas eu queria com o 7219, obrigado pela atenção
Valeu !
Antes de Tudo gostaria de parabenizar pelo post muito bem feito, eu gostaria de saber se é possivel colocar uma entrada de sinal(que seria um sensor de presença) para alterar a numeração desses displays ? como se cada movimento do sensor somasse +1. Agradeço !!
Boa tarde Gabriel, e obrigado pela visita !
É possível sim. Dê uma olhada nesse artigo, por favor :
http://www.arduinoecia.com.br/2013/10/contador-display-7-segmentos-3-digitos.html
Acho que faz exatamente o que você precisa, talvez com algumas alterações para funcionar com os displays ligados ao Max7219, mas funciona.
Abraço !
Ahh Muito obrigado mesmo !!
Vou precisar para o meu TCC !!
Parabéns pelo trabalho !!
Se precisar de alguma dica venho até aqui !!
Obrigado !!
Valeu Gabriel ! Qualquer coisa entre em contato. Abraço !
Fala Galera.
Gostaria de pedir ajuda na programação com base nesta deste post, porém o meu contador terá 6 displays individuais sete segmentos catodo comum.
O meu segundo display em diante conta até 9 e depois faz as letras a,b,c,d,e,f, gostaria de saber o porque.
#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 ao numero 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
lc.setIntensity(0,10); // Define o nivel de luminosidade (0 minimo, 15 maximo)
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 < 1000000 ; i++) //Loop variando valor de i de 0 a 99
{
lc.setDigit(0,5,i/100000,pontodecimal);
lc.setDigit(0,4,i/10000,pontodecimal);
lc.setDigit(0,3,i/1000,pontodecimal);
lc.setDigit(0,2,i/100,pontodecimal);
lc.setDigit(0,1,i/10,pontodecimal);
lc.setDigit(0,0,i%10,pontodecimal);
Serial.println(i);
delay(200); //Aguarda 1 segundo e mostra o próximo valor
}
delay(1000); //Aguarda 1 segundo e reinicia a contagem
}
Obrigado desde já !
Oi Gabriel !
Dei uma olhada no seu código e fiz algumas modificações. Não tenho 6 displays disponíveis, mas mandei as saídas para o serial monitor. O que eu fiz foi alterar os cálculos dos dígitos, e também mudar o tipo de valor de int (que vai até 32.767) para long (que vai até 2,147,483,647), senão o display iria mostrar valores estranhos depois que o valor de i fosse maior do que 32.767.
Talvez não seja a melhor solução, mas foi o que eu consegui por enquanto, espero que ajude. Se puder, por favor me avise se funcionou :
#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 ao numero 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
lc.setIntensity(0,10); // Define o nivel de luminosidade (0 minimo, 15 maximo)
lc.clearDisplay(0); // Apaga o display
Serial.begin(9600); // Inicializa a serial
pontodecimal = false; //Define o ponto decimal como DESLIGADO
}
void loop()
{
for(long i=0; i < 1000000 ; i++) //Loop variando valor de i de 0 a 100000
{
long digito5 = i%1000000;
long num5 = digito5/100000;
Serial.print(num5);
lc.setDigit(0,5,num5,pontodecimal);
long digito4 = i%100000;
long num4 = digito4/10000;
Serial.print(num4);
lc.setDigit(0,4,num4,pontodecimal);
int digito3 = i%10000;
int num3 = digito3/1000;
Serial.print(num3);
lc.setDigit(0,3,num3,pontodecimal);
int digito2 = i%1000;
int num2 = digito2/100;
Serial.print(num2);
lc.setDigit(0,2,num2,pontodecimal);
int digito1 = i%100;
int num1 = digito1/10;
Serial.print(num1);
lc.setDigit(0,2,num1,pontodecimal);
int num0 = i%10;
Serial.print(num0);
lc.setDigit(0,0,num0,pontodecimal);
Serial.print(" Num: ");
Serial.println(i);
delay(200); //Aguarda 1 segundo e mostra o próximo valor
}
delay(1000); //Aguarda 1 segundo e reinicia a contagem
}
Abraço !
Bom dia Arduino e Cia
Não estou conseguindo compilar este programa.
Erro: LedControl lc=LedControl(4,5,6,1);
sketch_nov27a.ino:1:24: error: LedControl.h: No such file or directory
sketch_nov27a:7: error: 'LedControl' does not name a type
sketch_nov27a.ino: In function 'void setup()':
sketch_nov27a:14: error: 'lc' was not declared in this scope
sketch_nov27a.ino: In function 'void loop()':
sketch_nov27a:28: error: 'lc' was not declared in this scope
Bom dia!
Me parece ser algum erro na instalação da biblioteca.
Abraço!
Como corrigir?
email para contato
[email protected]
abs
Nossa Agradeço Muito mesmo pela atenção !!
Funcionou direitinho !!
A única coisa que eu alterei foi:
int digito1 = i%100;
int num1 = digito1/10;
Serial.print(num1);
lc.setDigit(0,2,num1,pontodecimal);
Para
int digito1 = i%100;
int num1 = digito1/10;
Serial.print(num1);
lc.setDigit(0,1,num1,pontodecimal);
Mais de resto tudo perfeito !!
Muito Obrigado mesmo !!
Abraço !!
Opa ! legal Gabriel !
Verdade, copiei essa parte do código e esqueci de mudar. rs.
Qualquer coisa, estamos aí. Abraço !
Fala pessoa!
Seguinte, segui o tutorial e deu tudo certo, mas estou usando displays maiores de 1,5 polegadas e eles estão com a iluminação baixa, em locais com luz ficam quase apagados.
O que devo fazer para que fiquem mais brilhantes? Não manjo nada das voltagens, liguei como no tutorial:
Aqui o datasheet do display: http://pdf1.alldatasheet.com/datasheet-pdf/view/233059/KINGBRIGHT/SC15-11EWA.html
Valeu! =D
Boa tarde Cleiton ! Tudo bem ?
Olha, eu tive o mesmo problema que você com alguns displays, e consegui resolver mudando a resistência do circuito. Tente colocar uma resistência mais alta.
Neste tutorial, por exemplo, eu usei um resistor de 100 K. Tente aumentar o valor aos poucos, até chegar na iluminação ideal para o seu projeto. Em alguns displays eu cheguei a usar resistor de 1 Mega, mas recomendo que você aumente o valor aos poucos para não danificar o display.
Abraço e, se puder, depois me conte se funcionou. 😉
Cara muito obrigado por sua resposta, estava preocupado já pensando que teria que trocar algum componente que mudaria o circuito, já estou com as PCBs impressas e tudo mais, aliviado.
Vou comprar alguns resistores pra testar amanha e com certeza retorno aqui pra informar.
Muito obrigado mais uma vez, abraço!
Amigo, fiquei com uma dúvida: Por que eu devo diminuir a resistência no circuito? Se diminuir não acontece um efeito contrário com os displays ficando com os leds mais fracos? Entra 5V e passa pelo resistor de 100k, se aumentar esse resistor não diminuiria ainda mais a voltagem que alimenta os leds dos displays?
Obrigado pela ajuda!
Oi Cleiton,
Então, eu tinha a mesma dúvida, mas acabei achando um gráfico em um dos datasheets do Max7219 que mostrava exatamente o contrário.
Vou tentar achar essa informação novamente, mas fique tranquilo. Nos testes que eu fiz, quando maior a resistência, maior o brilho dos displays.
Abraço !
Opa, fiz alguns testes aqui com potenciômetro, e realmente, quanto mais aumentamos a resistência, mais os displays ficam "fracos". O MAX7219 tem uma limitação de voltagem de 5V, e permite um resistor mínimo de aproximadamente 10K, se diminuir disso ele "desarma".
Fiz pesquisas na internet e vi algumas pessoas usando o MAX7219 com displays de 12V ou até mais, usando mais alguns CI's que são: 74HC540, ULN2803A e UDN2981A em conjunto com o MAX.
Então para que meu projeto fique da forma que é preciso que fique, tive que comprar esses CI's, vou perder 2 PCBs, mas vou dar uma refatorada em todo projeto e acredito que ficará satisfatório, vou confeccionar uma pcb somente para os CI's e deixar conectores já disponíveis para que plugue os displays.
Se quiser eu posto aqui o esquema do MAX com esses CI's, blz?
De qualquer forma veja se consegue novamente essa informação, pois pode ser importante.
Abraço!
Oi Cleiton !
Legal, valeu pelas informações. Realmente comigo deu um resultado diferente, e eu recomendei a solução de aumentar a resistência para outros usuários, que testaram e me falaram que funcionou. Talvez isso esteja relacionado ao tipo de display, não sei, preciso fazer mais testes.
Se puder contribuir com essa informação do Max com os CI´s, seria legal sim. Vai ajudar bastante gente.
Abraço !
bom dia cleiton, estou montando circuito com o mesmo display grande que vc usou , teria como voce me mandar o esquema de como ficou pra aumentar o brilho do mesmo ? meu email [email protected]. valeu
Fala Arduino & Cia !
To eu aqui de novo !! kkkkk
Gostaria de um empurrão na programação do max7219 com o sensor óptico TCRT5000, tem como fazer por essa ledcontrol ou você me sugeria uma outra biblioteca, tentei uma programação aqui mais não rolou, nem sinal do display acender….
Gostaria de aprender a mexer nesse danado kkkkk
Obrigado pela atenção !!
Fala Gabriel !
Bom retorno. 😎
Posta o código pra gente dar uma olhada. Estou sem Max7219 aqui agora, mas vamos ver no que posso ajudar.
Abraço !
Bom Vamos lá
#include "LedControl.h"
int contador = 0;
int pinosensor = 19; //Ligado ao pino "coletor" do sensor óptico – Porta A5 ao Arduino
int leitura; //Armazena o valor lido pelo sensor
// 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 ao numero de MAX7219 utilizados no circuito
LedControl lc=LedControl(4,5,6,1);
boolean pontodecimal;
void setup()
{
pinMode(pinosensor, INPUT); //Define o pino do sensor optico como entrada
// Inicializa o Max7219
lc.shutdown(0,false); // Habilita o display
lc.setIntensity(0,10); // Define o nivel de luminosidade (0 minimo, 15 maximo)
lc.clearDisplay(0); // Apaga o display
Serial.begin(9600); // Inicializa a serial
pontodecimal = false; //Define o ponto decimal como DESLIGADO
}
void loop()
{
leitura = digitalRead(pinosensor); //Le as informações do pino do sensor
if (leitura != 1); //Verifica se o objeto foi detectado
contador = contador++; //Incrementa o valor do contador
while(digitalRead(pinosensor) != 1); //Loop caso o objeto pare sobre o sensor
{
for(long i=0; i < 1000000 ; contador++) //Loop variando valor de i de 0 a 100000
{
long digito5 = i%1000000;
long num5 = digito5/100000;
Serial.print(num5);
lc.setDigit(0,5,num5,pontodecimal);
long digito4 = i%100000;
long num4 = digito4/10000;
Serial.print(num4);
lc.setDigit(0,4,num4,pontodecimal);
int digito3 = i%10000;
int num3 = digito3/1000;
Serial.print(num3);
lc.setDigit(0,3,num3,pontodecimal);
int digito2 = i%1000;
int num2 = digito2/100;
Serial.print(num2);
lc.setDigit(0,2,num2,pontodecimal);
int digito1 = i%100;
int num1 = digito1/10;
Serial.print(num1);
lc.setDigit(0,1,num1,pontodecimal);
int num0 = i%10;
Serial.print(num0);
lc.setDigit(0,0,num0,pontodecimal);
Serial.print(" Num: ");
Serial.println(i);
delay(100); //Aguarda 1 segundo e mostra o próximo valor
}
delay(1000); //Aguarda 1 segundo e reinicia a contagem
}
}
Bom eu tentei interpretar as programações e saiu isso ai… dei uma vasculhada na net e vi que alguns programas usavam o ++ para adicionar um numero no contador, também no livro arduino básico tinha um programa que falava que o Pino Din do Max7219 era o que recebia e enviava o sinal…
Muito Obrigado pela atenção !!
Abraço !!
bom dia, estou fazendo um timer countdown de 4 digitos , e queria usar o max7219, como faço pra começar a contar de um numero alto e decrescer ate zero? obrigado
Bom dia, você vai utilizar algum tipo de botão ? ou vai rodar em loop ? Você pode usar o mesmo esquema deste post, ligando os outros 2 dígitos aos pinos Dig2 e Dig3 do Max7219. Se tiver dúvida na pinagem, dê uma olhada nesse artigo :
http://www.arduinoecia.com.br/2013/07/controlando-display-7-segmentos-com-o.html
Abraço !
Estou precisando de um projeto de contador até 10.000. Alguem viu algo parecidopor ai?
Bom dia Bruno,
Não tenho nada parecido no momento, mas creio que não seja difícil montar. Você está pensando no mesmo esquema ? Com display 7 segmentos ?
Abraço !
Fala Bruno é mais ou menos isso ai !!
#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 ao numero 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
lc.setIntensity(0,10); // Define o nivel de luminosidade (0 minimo, 15 maximo)
lc.clearDisplay(0); // Apaga o display
Serial.begin(9600); // Inicializa a serial
pontodecimal = false; //Define o ponto decimal como DESLIGADO
}
void loop()
{
for(long i=0; i < 10001 ; i++) //Loop variando valor de i de 0 a 100000
{
long digito4 = i%100000;
long num4 = digito4/10000;
Serial.print(num4);
lc.setDigit(0,4,num4,pontodecimal);
int digito3 = i%10000;
int num3 = digito3/1000;
Serial.print(num3);
lc.setDigit(0,3,num3,pontodecimal);
int digito2 = i%1000;
int num2 = digito2/100;
Serial.print(num2);
lc.setDigit(0,2,num2,pontodecimal);
int digito1 = i%100;
int num1 = digito1/10;
Serial.print(num1);
lc.setDigit(0,1,num1,pontodecimal);
int num0 = i%10;
Serial.print(num0);
lc.setDigit(0,0,num0,pontodecimal);
Serial.print(" Num: ");
Serial.println(i);
delay(100); //Aguarda 1 segundo e mostra o próximo valor
}
delay(1000); //Aguarda 1 segundo e reinicia a contagem
}
Conta até 10.000 Sozinho !
Ainda não sei como colocar o sensor ou algo do tipo.
Abraço !!
Tentei montar esse projeto mas os Displays não estão acendendo. Também tinha tentado ligar o MAX7219 em uma matriz de LEDs 8×8 seguindo as instruções do livro Arduíno Básico – Projeto 21, mas a matriz ficou com todos os LEDs acesos. Estou achando que meu MAX7219 está com problema, você sabe se tem alguma maneira de testa-lo?
Oi Rodrigo,
Talvez seja alguma outra coisa. Vc viu se os displays não estão acendendo, ou se estão apenas muito fracos ? Tente trocar o valor da resistência. Comigo aqui deu certo quando eu troquei por uma resistência de valor maior.
Abraço !
Obrigado! Troquei o resistor de 10K por um de 1M e funcionou! Engraçado quanto maior a resistência maior o brilho, mas mesmo com o resistor de 1M o brilho ficou um pouco fraco. Agora não sei porque minha matriz 8×8 não está funcionando, ela só acende todos os LEDs, já verifiquei a pinagem várias vezes, troquei os resistores e nada! Você já utilizou uma matriz 8×8 com o MAX7219?
Boa tarde Rodrigo !
Legal ter funcionado. Tente outros valores de resistência, se puder.
Quanto à matriz 8×8, já usei sim, inclusive o exemplo do livro Arduino Básico, e funcionou direitinho.
Geralmente esse problema de acender todos os leds acontece quando vc liga a matriz ao contrário…
Abraço !
Boa tarde!
Consegui fazer funcionar, a pinagem do datasheet que eu peguei estava errada, tive ir descobrindo os pinos na tentativa e erro… Deu trabalho mas funcionou! Obrigado pelas dicas!
Abraço!
Bom dia Rodrigo !
Obrigado pelo retorno. Só não gostei dessa parte do datasheet com pinagem errada. 🙁
Abraço !
Gostaria de saber como posso incrementar dois botões nesse projeto…. sendo um botão para incrementar um numero e o outro para decrementar, igual a um placar eletrônico. Obrigado a quem disponibilizar ajuda….
Boa tarde Cleuber,
Acho que nesse post aqui tem o que você precisa :
http://www.arduinoecia.com.br/2013/10/contador-display-7-segmentos-3-digitos.html
Você pode trocar o sensor óptico por um botão, e incrementar o valor do contador. Depois alterar o código e adicionar mais um botão, para decrementar o valor do contador.
Abraço !
Boa noite equipe Arduino e Cia,
No meu projeto estou fazendo um placar eletrônico com display duplo de 7 segmentos e gostaria de saber se posso usar o MAX 7219 para economizar portas no arduino utilizando essa mesma biblioteca? A lógica dos botões seria para essa aplicação?
Boa noite Cleuber,
Exato, você pode usar esse mesmo circuito, e implementar os 2 botões para mostrar os valores desejados.
Abraço !
Bom dia, na compilação está gerando os seguintes erros:
In file included from sketch_jun25a.ino:1:
C:Program Files (x86)ArduinolibrariesLedControl/LedControl.h:30: error: 'byte' does not name a type
C:Program Files (x86)ArduinolibrariesLedControl/LedControl.h:52: error: 'byte' does not name a type
C:Program Files (x86)ArduinolibrariesLedControl/LedControl.h:54: error: 'byte' does not name a type
C:Program Files (x86)ArduinolibrariesLedControl/LedControl.h:64: error: 'byte' has not been declared
C:Program Files (x86)ArduinolibrariesLedControl/LedControl.h:64: error: 'byte' has not been declared
C:Program Files (x86)ArduinolibrariesLedControl/LedControl.h:131: error: 'boolean' has not been declared
C:Program Files (x86)ArduinolibrariesLedControl/LedControl.h:142: error: 'byte' has not been declared
C:Program Files (x86)ArduinolibrariesLedControl/LedControl.h:153: error: 'byte' has not been declared
C:Program Files (x86)ArduinolibrariesLedControl/LedControl.h:164: error: 'byte' has not been declared
C:Program Files (x86)ArduinolibrariesLedControl/LedControl.h:164: error: 'boolean' has not been declared
C:Program Files (x86)ArduinolibrariesLedControl/LedControl.h:179: error: 'boolean' has not been declared
minnha IDE é a 1.0.5 – r2
existe uma outra biblioteca que poderia usar?
Boa noite Cleuber,
Você quis dizer versão 1.5.6-r2 ? Se for essa, realmente pode ser alguma incompatibilidade da biblioteca. Você consegue testar em outra versão da IDE ?
Abraço.
Obrigado pelo artigo!
Estou montando um projeto que utiliza 3 sensores de efeito hall para medir rotação, velocidade e nível de combustível.
Para indicar velocidade eu estou utilizando 2 displays de 7 segmentos com o Max7219, e LEDs para indicar rpm(6 leds) e combustível(4 leds). Estou pensando em utilizar um 74HC595 para cada uma dessas 2 indicações. Gostaria de uma opinião a respeito.
Grato!
Boa tarde,
Bacana o seu projeto. E se você usasse um display LCD ? Você poderia colocar na parte superior a indicação de RPM, e na inferior o medidor de combustível.
Usar o 74HC595 também não é problema, mas se a questão for o número de portas, talvez um LCD seja a melhor opção.
Abraço !
Obrigado pela resposta!
Eu optei por essa configuração pela facilidade na visualização do motorista.
Agora estou com dúvida quanto a programação, como fazer essas três operações funcionarem ao mesmo tempo. Estou testando com o Proteus e sem utilizar os sensores, mas as indicações não funcionam ao mesmo tempo, só em sequencia.
Grato.
Entendi… Você tem razão, realmente dá um certo trabalho programar os sensores para ter os dados em tempo real, que acho que é o seu caso.
Não tive a oportunidade de mexer com o Proteus, mas ele sendo um simulador, pode ter algumas limitações, e você só vai conseguir ver o tamanho da "encrenca" de verdade quando montar o circuito.
Se tiver novidades e quiser compartilhar aqui no site, agradeço.
Abraço !
Eu consegui fazer um esboço no Proteus utilizando o Arduino UNO e um CI MAX7219 para as indicações.
Segue o link para o esboço no Proteus > http://i.imgur.com/Jl1QQbb.png?1
Eu vou precisar de mais algum componente?
E com relação a programação, fica mais complexo de ser feito dessa forma?
Tem alguma forma mais simples para a programação!?
Assim que der eu vou tentar montar em uma protoboard!
Obrigado.
Boa noite,
A principio não falta muita coisa, apenas algumas resistências para os leds, que eu imagino que você não tenha esquecido. 🙂
Só não sei se o Max7219 vai dar conta de acionar tudo isso. Como eu te falei anteriormente, você só vai ver o tamanho da encrenca na hora de montar. rs
Abraço !
Boa noite minha duvida é se eu posso trocar o pino 4 do arduino pelo pino 2.
ficaria assim:
Pino 2 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
Bom dia,
Sem problemas. Altere o circuito e também essa linha do programa, que define os pinos que você está utilizando :
LedControl lc=LedControl(4,5,6,1);
Abraço !
Boa tarde,
Estou tendo problema com a biblioteca, está dando o mesmo erro que já vi nos comentários anteriores, baixei uma IDE novo, eu uso a 1.0.6 e baixei a 1.0.5, mas não obtive sucesso. Você descobriu o que pode está causando isso ou se acaso tem alguma outra biblioteca que posso usar??
Obrigado
Boa tarde João,
Sinceramente não sei o que pode estar acontecendo. Aqui compila normalmente com essa mesma biblioteca, tanto na IDE 1.0.5 como na 1.0.6.
Eu ainda penso que seja algum conflito com outra biblioteca. Tente fazer uma instalação "limpa" da IDE, apenas com a biblioteca LedControl.
Abraço !
Olá, pode me dizer se os displays são Anodo ou Catodo?
Onde ficam os GND dos displays conectados?
Boa tarde Waltenio,
Os displays são de catodo comum, eu utilizei o esquema de ligação deste post :
http://www.arduinoecia.com.br/2013/07/display-7-segmentos.html
Quanto ao GND, é o pino 3 do display, sendo que o primeiro display eu liguei ao pino 2 (Digito 0) do Max7219, e o segundo display eu liguei ao pino 11 (digito 1) do Max7219.
Abraço !
Para resolver o problema do Cleuber Ferreira basta ele abaixar a ultima versão do arduino e fazer o passos abaixo:
I took a quick look at the library, well libraries since there are two LedControl libraries. The first one compiled straight away but the second modified one gave the errors you mentioned.
Did you update to the Arduino 1.0 IDE?
If you didn't update the IDE are you sure your using the same one as before and not accidently swapped it for the modified one?
If you updated the IDE and are sure its the correct LedControl library try opening LedControl.h and replace #include "WConstants.h" with #include "Arduino.h" and also open LedControl.cpp and replace #include "WProgram.h" with #include "Arduino.h"
Teria como dar um exemplo de como seria para mostrar números com 3 ou mais dígitos.
Não entendi o que esta linha faz.
lc.setDigit(0,1,i%10,pontodecimal);
Mais precisamente a função i%10 e i/10
Bom dia Luiz,
A função i%10 calcula o resto da divisão de i por 10, eu uso isso para isolar o número que vou mostrar. A mesma coisa com o i dividido por 10 (i/10). Por exemplo, vamos supor que o contador chegou a 56
primeiro digito = i/10 = 56/10 = 5 (apenas a parte inteira)
segundo digito = i%10 = 6 (resto da divisão acima)
Quando ao display com 3 dígitos, por favor dê uma olhada neste link:
http://www.arduinoecia.com.br/2013/10/contador-display-7-segmentos-3-digitos.html
Abraço !
Necessito de ajuda ! sou novo com arduino, e preciso de auxilio com meu projeto da faculdade, que é um placar eletrônico. No meu projeto com arduino, estou usando 12 displays catodos de 7 segmentos , usando 2 max7219, em um max7219 quero implementar 6 displays precisam de 7.2-7.4V de tensão (display de 2 polegadas) e no outro max7219 tem 6 displays precisam de 8.5-10V de tensão (display de 4 polegadas). Como devo proceder com essas diferentes tensões, já que o max7219 suporta apenas até 5V de tensão ? Grato!
Boa noite Felipe,
Você pode usar o Max7219, mas vai precisar de mais alguns componentes. Dê uma olhada neste link, por favor:
http://embedded-lab.com/blog/?p=7628
Abraço!
oi boa noite a todos :
estou querendo uma ajudar de meus amigos sou um iniciantes em programação mais já tenho bastante experiencia em eletrônica
estou querendo montar um painel pra chamadas com três dígitos e estou querendo usar um outro Ci DC4014 ou 74hc165 para multiplexa as portas pq o ardunio ñ vai dar para supre muitas entradas são 40 e cada pino vou chamar um numero os amigos tem uma ideia posso usar a mesma ideia do colegar que usou um sensor
Boa Tarde!
Estou não conheço muito do arduino, mas como faço pra conseguir contar até 20 e contar também duas casa decimais depois da virgula.
Obrigado
Boa Tarde!!
Eu estou a tentar realizar um projecto para a minha PAP que e fazer um placar desportivo mas para ja quero fazer em dois displays o mesmo representado no video, so que com o CI uln2003an so que eu coloco a programação a cima exposta e ela compila direito e envia mas nao da nada nos dois displays.
Alguem me sabe dizer o que se passa?
Boa Tarde
Eu quero fazer um contador com dois displays de 7 segmentos em que consiste em fazer a contagem de 0 ate 99 mas ainda so consegui por um dos displays a contar ate 9 o outro esta descontrolado.
Como e que consigo resolver o problema e por os dois a contar??
Poderia me ajudar, preciso de um projeto com 13 displays de 7 segmentos e 4 LEDs. Vou fazer mais ou menos uma demonstração de como é a ordem, [] vale como display e : como leds, assim:
[][][] [][] [][][][] : [][] : [][]
Se puder me ajudar, passar um e-mail, ou entrar em contato comigo: [email protected]
Tenho dois anodos comum qual seria a ligação?
Olá,
Gostaria de saber , se alguém teria uma programação envolvendo arduino nano controlando 4 displays individuais de 7 segmentos com o ci max 7219 , onde quem determina a variação de números do display será um potenciometro de 20kOhms, variando de 10k para zero , e indicando 150 e variando de 10K para 20K tambem indicando 150.
Grato!!!
boa noite pessoal da Arduino e Cia, gostaria de uma ajuda.
estou montando um projeto que consiste em um placar de basquete que conta cada passada de bola, de 0 a 10 se posivel com um botao de reset.
eu ja fiz os dois display de 7 segmentos.
estou com o arduino nano e o MAX7219.
Boa noite professor, gostaria de uma pequena ajuda se possível, estou passando horas e horas aqui, conseguir em fim realizar os testes de acordo ao seu ensinamento. Preciso somente agora modificar o código, gostaria de fazer aparecer nos displays a leitura de um sensor DHT22. Se eu conseguir fazer aparecer o primeiro digito já será uma grande conquista, poderia me dar uma luz como fazer? pq na biblioteca DHT nos teste pega valor float, como eu pego tipo 99.9° e insiro nos displays? se possivel me ajuda somente no primeiro digito q com certeza conseguirei no restante
Bom dia!
Entendi.. dê uma olhada nesse post aqui:
https://www.arduinoecia.com.br/2013/04/lcd-16×2-rtc-numeros-grandes.html
Nele eu uso algumas funções para "extrair" determinados digitos de um número e exibir na tela. Creio que vá te ajudar.
Abraço!
Adilson
olá alguém pode me ajudar.
Preciso ligar o max 7219 com display de 7 segmentos e 8 dígitos, com arduino e um encoder industrial de 600 pulsos para mostrar deslocamento da mesa de uma fresa, para referencias, e com botão para zerar posição
[…] post Controlando 2 displays de 7 segmentos com o Max7219, vamos utilizar este circuito como base, e usar esse CI para controlar 2 […]
Olá Arduino e Cia, Gostei Do Projeto Eu Entendi o Funcionamento, Ao Iniciar Ele Zera O placar “00”, e Começa a contar, no dígito a esquerda conta de 0 a 9, na virada ele zera o contador e marca 1 no da direita” e fica assim 0.1″, continua contando e na virada maca zero na esquerda marca(soma) Miais 1 “ficando assim 0.2, assim por diante até 9.9. zerando então o placar, Só lembrando que usei uma placa com MAX7219 de 8 dígitos e o programa só controla 2 display