Adquira estes componentes na Loja do Lab de Garagem
Aproveitando que o clima Natalino que esta chegando, nós do Laboratório de Garagem resolvemos produzir um tutorial para fazer um letreiro com componentes comuns e facilmente encontrados em qualquer lugar para desejarmos a todos os garagistas um Feliz Natal.
Lista de materiais:
1 x Arduino Uno R3 original
1 x Protoboard Grande.
8 x Resistores de 330Ω para limitar a corrente do Anodo dos LEDs.
8 x Resistores de 1KΩ para a chavear a base dos transistores.
8 x Transistores BC337 (pode ser BC547 ou qualquer NPN compatível).
1 x Matriz de LED 2 cores 8x8 (pode ser unicolor também)
Alguns jumpers.
Os itens podem ser adquiridos na loja do Lab. de Garagem.
Realizamos a montagem do circuito como no esquema abaixo:
O PORTD (pinos digitais de 0 a 7) foram ligados nos resistores de 330Ω que vão aos Anodos dos Diodos Vermelhos(Linhas).
O PORTC (pinos de A0 até A5) e o PORTB (pinos 8 e 9) foram conectados as resistências de 1KΩ das bases dos transistores que tem no coletor os Catodos LEDs e os emissores vão para GND
Funcionamento:
Para o acionamento da matriz, fizemos uma varredura das colunas que são acionadas uma de cada vez e em alta velocidade para que crie um fenômeno conhecido como Persistência Visual que em inglês é conhecido como POV (Persistence Of Vision).
Este efeito gera uma falsa imagem no cérebro humano, fazendo com que pareça com que a figura estática esteja se movendo. Para isto temos que ter uma atualização dos quadros superior a 24 quadros por segundo.
O passo a passo para acionamento das colunas é o seguinte:
A 1ª coluna é acionada através dos transistores que levam os catodos ao GND.
Buscamos o dado na matriz texto[] (que estão em Hexadecimal) com o ponteiro + número de coluna e enviamos para o PORTD ligando os LEDs.
Aguardamos um tempo para os LED's poderem acender.
Apagamos os todos e acionamos a próxima coluna repetindo estes passos 8 vezes e na 8ª coluna e com isto acabamos um quadro completo.
No exemplo abaixo montamos a letra A
Repetimos este quadro algumas vezes para controlar a velocidade com que as letras passam no letreiro (no sketch a variável quadros faz este papel).
Você verá a imagem acima deste jeito:
Incrementamos o ponteiro da matriz texto[] e repetimos todos os passos acima para fazer o texto "rolar" pela matriz de LEDs.
A matriz terminará quando alcançar o limite estipulado pelo 1º laço for, recomeçando a passagem das letras.
Upload do Sketch:
Após a montagem e verificação do circuto, copie e cole o sketch abaixo e faça o upload para o Arduino:
//
// LETREIRO DE NATAL LAB. DE GARAGEM
//
byte texto[] = {//Matriz onde o texto é colocado para que possa aparecer no display
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,//Espaço
0x0, 0xFF, 0xFF, 0x3, 0x3, 0x3, 0x3, 0x0,//L
0x0, 0xE, 0x1F, 0x33, 0x33, 0xFF, 0xFF, 0x0,//d
0x0, 0x7E, 0xFF, 0xC3, 0xDB, 0xDF, 0x5E, 0x0,//G
0x0, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0,//-
0x0, 0xFF, 0xFF, 0xD8, 0xD8, 0xC0, 0xC0, 0x0,//F
0x0, 0xFF, 0xFF, 0xDB, 0xDB, 0xC3, 0xC3, 0x0,//E
0x0, 0xFF, 0xFF, 0x3, 0x3, 0x3, 0x3, 0x0,//L
0x0, 0x0, 0x0, 0xDF, 0xDF, 0x0, 0x0, 0x0,//I
0x0, 0xC7, 0xCF, 0xDF, 0xFB, 0xF3, 0xE3, 0x0,//Z
0x0, 0x0, 0x0, 0x0, 0x0, 0x0,//Espaço
0x0, 0xFF, 0xE0, 0x70, 0x38, 0x1C, 0xFF, 0x0,//N
0x0, 0x7F, 0xFF, 0x8C, 0x8C, 0xFF, 0x7F, 0x0,//A
0x0, 0xC0, 0xC0, 0xFF, 0xFF, 0xC0, 0xC0, 0x0,//T
0x0, 0x7F, 0xFF, 0x8C, 0x8C, 0xFF, 0x7F, 0x0,//A
0x0, 0xFF, 0xFF, 0x3, 0x3, 0x3, 0x3, 0x0,//L
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,//Espaço
};
int ponteiro;
int coluna;
int quadros;
void setup()
{
DDRC = B00011111; //configura os pinos de A0 até A5 como saída digital.
DDRB = B00000011; //configura os pinos 8 e 9 como saída digital.
DDRD = B11111111; //configura os pinos de 0 até 7 como saída digital.
}
void loop()
{
PORTC = B00000000; //Mantem as colunas da matriz desligadas
PORTB = B00000000; //Mantem as colunas da matriz desligadas
for(ponteiro=0; ponteiro < 126;ponteiro++){ //Carrega o ponteiro em zero e limita ele para o tamanho da matriz
for (quadros =0; quadros < 5;quadros++ ){//Inicia o contador de quadros por passagem
for(coluna=0; coluna < 8;coluna++) // Inicia Contador das Colunas
{
if (coluna<=5)
{
PORTB = B00000000;//Deixa pinos 8 e 9 desligados
PORTC = B00000001 <* coluna;//Seta o bit da coluna que será acessa.
//***************************************************************************************
// OBS: No lugar do " * " da linha acima, coloque outro sinal de menor que " < "
//***************************************************************************************
}
else
{
PORTC = B00000000;//Deixa pinos de A0 a A5 desligados
PORTB = B00000001 <* coluna-6;//Seta o bit da coluna que será acessa
//****************************************************************************************
// OBS: No lugar do " * " da linha acima, coloque outro sinal de menor que " < "
//****************************************************************************************
}
PORTD = (texto[ponteiro+coluna]);//Carrega o PORTD(pinos 0 a 7 do Arduino) com o valor indicado pela matriz
delay(3);// Espera para que o LED Acenda e em seguida apaga os LEDs.
PORTD = 0x00;
}
}
}
}
Você também pode modificar o texto escrito alterando os valores em hexadecimal na matriz texto.
Esperamos que tenham gostado deste tutorial!! Boa diversão com este Letreiro para o Natal!!! Caso tenham dúvidas, poste aqui no blog! Para sugestões, clique aqui! Para ver outros tutoriais, clique aqui e projetos abertos, clicando aqui!
Referências:
Comentar
ola,
comprei na antiga loja do labdegaragem uma LED MATRIX YSM 2088CR3G2C testei no multímetro e ela acende seus led's metade vermelho e metade verde. seguindo alguns tutoriais tentei mudar a tensão e corrente aplicadas nos terminais mas não tive o resultado que esperava, que no caso seria toda a matriz vermelha ou toda verde ... aceito sugestões ^^ ... alguém pode me ajudar por favor????? ...
Olá, boa tarde! Tenho um Arduino NANO e gostaria muito de poder usar esse projeto nele mas não sei como mudar o sketch para funcionar no NANO. Alguém poderia me ajudar? Muito obrigado :)
Olá pessoal estou tentando fazer este circuito mas com pic estou com dificuldade; quero utilizar 2 ports b e c alguem pode me ajudar por favor?????
desde ja agradeço pela atenção
Olá pessoal,
Eu estava interessado em fazer, só que com outras letras. Alguém ai tem as informações das letras em números Héxadecimais igua a que esta sendo usada nesse projeto?Ex : '' Letra 'A' ,
0x0, 0x7F, 0xFF, 0x8C, 0x8C, 0xFF, 0x7F, 0x0
Ficarei muito agradecido se alguém me enviar. Obrigado ^^
olá estou montando esse projeto mas pretendo fazer com 4 matrizes.
queria saber se não poderiam me ajudar com a programação.
att grato.
Amigos, boa noite.
Eu gostaria muito de montar esse projeto mas queria fazer com matriz de led feito em casa. Como é a disposição dos terminais na matriz de led?
Quem poder me responder ficarei muito grato
Tá tudo na bancada, menos os jumpers. Vou experimentar expansores de portas nele, pq a idéia é controlar um sistema de seguranca pro carro, então vou precisar de mais portas.
tenho como montar em um microcontrolador pic16f648a
Já estou com os componentes aqui, vai ser o display do sistema de seguranca do meu carro :D
Thiago S. Malavasi
É possível mandar os dados via serial e grava na EEPROM interna do Arduino.
Mas para isto seria interessante fazer uma matriz com letras e gruarda-las no Arduino
Giovanni Zeminian
Não fizemos outras ligações porque não utilizamos as duas cores que estes LEDs tem.
É possível fazer o controle das duas com o Arduino Uno mas necessitariamos de um 74HC595 para diminuir a quantidade de pinos.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)