Letreiro de Natal – Matriz 8x8 com Mensagem de Natal para Você Garagista

 

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:

http://en.wikipedia.org/wiki/Persistence_of_vision

http://www.arduino.cc/en/Reference/PortManipulation

Exibições: 21931

Comentar

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)

Comentário de jone filho em 1 maio 2017 às 17:56

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????? ... 

Comentário de Vitor Henrique Garcia em 16 julho 2014 às 15:46

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 :)

Comentário de fabio neri dos santos em 4 março 2014 às 15:50

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

Comentário de Maik Felipe em 6 janeiro 2014 às 9:01

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 ^^


Comentário de mateus sampaio de brito machado em 8 novembro 2013 às 18:02

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.

Comentário de Evandro Gomes da Silva em 4 novembro 2013 às 20:50

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

Comentário de Alexandre em 25 setembro 2013 às 16:05

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.

Comentário de marcio wendell cardoso em 25 setembro 2013 às 15:15

tenho como montar em um microcontrolador pic16f648a

Comentário de Alexandre em 24 setembro 2013 às 10:18

Já estou com os componentes aqui, vai ser o display do sistema de seguranca do meu carro :D

Comentário de Laboratório de Garagem em 12 agosto 2013 às 10:43

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.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço