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

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 Thiago S. Malavasi em 10 agosto 2013 às 1:21

Alguém imagina uma maneira de passar um texto via serial pra esse projeto?

Comentário de Giovanni Zeminian em 2 agosto 2013 às 14:04

Olá lab de garagem, parabéns pela iniciativa, estão de parabéns, gostaria de saber porque algumas das pernas da matriz 8x8 não são ligadas. Teoricamente alguns leds não acenderiam certo? Estou tentando mas com uma matriz 7x5, tem muita diferença? Obrigado.

Comentário de heber luiz rodrigues marcussi em 9 julho 2013 às 0:55

alguém sabe onde encontro o datasheet dessa matriz ?

Comentário de Thiago S. Malavasi em 21 janeiro 2013 às 18:50

Valeu pessoal!

Comentário de Laboratório de Garagem em 21 janeiro 2013 às 17:57

Olá Thiago...

Ele o número 128 realmente tem haver com o fim da matriz texto.

a matriz esta um pouco maior mas não tem problema devido aos espaços do inicio e do fim do programa.

Há um erro no tutorial na linha do sketch: 

...

PORTB = B00000001 coluna-6;//Seta o bit da coluna que será acessa.

...

entre o B00000001 e coluna-6;  Deve ser colocado o caracter < duas vezes (por limitações no HTML não podemos coloca-lo repetido).

Espero ter ajuda-lo.

Comentário de Thiago S. Malavasi em 18 janeiro 2013 às 21:08

Boa noite pessoal!
Depois de uma pesquisa, achei esse programa, que cria os padrões pra uma matriz 8x8 e consegui fazer as alterações que queria!

http://www.box-fish.com/

Comentário de Thiago S. Malavasi em 18 janeiro 2013 às 17:46

Boa noite pessoal!

Como foram gerados, ou qual a lógica para gerar esses hexadecimais da matriz Texto[]?

Comentário de luis em 29 dezembro 2012 às 15:42

chefe!! to fazendo em C    como faço pra desocar a letra?

feliz 2013!!!

 

 

 

 

 

Comentário de Reynaldo Martins em 21 dezembro 2012 às 17:48

Muito interessante e vem de encontro a um projeto que estou desenvolvendo. Trata-se de um painel de mensagens com leds numa matriz 8x16 utilizando o 74HC154. O controle será feito por um PIC16F877A programado em basic no compilador MikroBasic PRO 5.6.1.

A idéia é gravar na eeprom do PIC as mensagens a serem apresentadas no display de led, utilizando um teclado normal PS/2. Todos os comandos para leitura/escrita da eeprom assim como as diversas funcionalidades do display, tais como texto piscando, apresentação de texto invertido, velocidade de apresentação do texto, etc, serão acionadas através do teclado.

Pergunto se alguém tem interesse em participar deste desenvolvimento.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço