Ir ao conteúdo

Matriz Led's - C/ texto rolante


Lucasfonoli

Posts recomendados

Postado
varredura de cima pra baixo

A varredura de cima para baixo se aplica a uma matriz de leds,e não a várias(tipo um letreiro com uma frase).

O 74HC595 não teria utilidade ja que ele não faria uma varredura(se for um caractere),ja se for mais,não imagino um jeito de fazer utilizando uma varredura de cima para baixo.

  • Membro VIP
Postado

eureka! então consegui fazer algo inimaginável! e quase inexplicável, mas vejamos...

a função:


{
c=13-c; //posição na coluna
dado-=32; //retira ascii (spc)
dado+=dado*6; //de 6 em 6 bits: o topo de cada padrão de caracter
lin6[c]=tabdisp[dado]; //procura o padrão na tabela
lin5[c]=tabdisp[dado+1];
lin4[c]=tabdisp[dado+2];
lin3[c]=tabdisp[dado+3];
lin2[c]=tabdisp[dado+4];
lin1[c]=tabdisp[dado+5];
lin0[c]=tabdisp[dado+6];
}
void putchar(unsigned char c,unsigned int dado)

e dentro da interrupt


switch (lin) //aqui está a varredura de uma linha de 112 leds por vez
{
case 0: for (j=0;j<14;j++) shift(lin6[j]); break; //cada shift desloca 8 bits
case 1: for (j=0;j<14;j++) shift(lin0[j]); break; //está fora de sequencia para adptar ao circuito
case 2: for (j=0;j<14;j++) shift(lin1[j]); break;
case 3: for (j=0;j<14;j++) shift(lin2[j]); break;
case 4: for (j=0;j<14;j++) shift(lin3[j]); break;
case 5: for (j=0;j<14;j++) shift(lin4[j]); break;
case 6: for (j=0;j<14;j++) shift(lin5[j]); break;
}
lin++;//próxima vez, próxima linha
...

o macete está na famigerada função shift() que se comporta como um port e no

for (j=0;j<14;j++) shift(lin6[j]);

que se comporta como um port de 112 pinos

Não precisa dizer que não entendeu nada pois nem eu me entendo as vezes. Mas para um mediano programador c e com algum contato com hw pode ser entendível.

Se não for um projeto top secret, que o autor do post poste seu método para efeito de comparação

abç

Postado

Mesmo com uma frase, eu acho que tem solução sim nessa varredura vertical. No meu programa (que estou desenvolvendo) as frases serão armazenadas em forma comum de texto e na hora de serem exibidas são transformadas em uma matriz (short int) onde cada elemento equivale a um led da matriz... daí os dados sempre vêm dessa matriz

um exemplo:

Nessa rotina, ao qual ainda nao tinha implementado a função shift, a matriz de tem 10 linhas e 70 colunas e a matriz de dados tem 10 linhas e infinitas colunas. Já implementa a possibilidade de frase rolante, bastando apenas que se atribua "j++" para andar na horizontal e i++ para andar na vertical

essa rotida estará dentro de um bloco for, para rodar o tempo que cada frase ficará para ser exibida:

Void Main ()

{

For(x<10, x++)

{

Void Letreiro();

}

i++;

}

Void letreiro (F)

{

j2 = j+69;

i2 = i+9;

DT1 = 1; //shift das linhas

For (i<=i2, i++)

{

CLK1 = 0; CLK1 = 1; //CLK das linhas

CP1 = 0; CP1 = 1; //CP das linhas

DT1 = 0; DT2 = 0; //DT das linhas / DT das colunas

(For j<=j2, j++)

{

DT2 = F[j]; //DT das colunas

CLK2 = 0; CLK2 = 1; //CLK das colunas

}

CP2 = 0; CP2 = 1; //CP das colunas

Delay 1ms;

}

j = j - 69;

i = i - 9;

}

Postado

Eu acho que voce não vai conseguir chegar até o HardWare,mas pode prever simulando no proteus.

voce tambem deve pensar no Hardware, e deve ter adquirido uma matriza de Leds ou mais,que são 8 x 8.

No caso deste projeto,voce tem que programar em função do HardWare.

O sistema de varredura mostrado no link,é o usado em Tvs,Celulares,monitores,projetores laser,paineis de Leds.Então pense a respeito.

  • Membro VIP
Postado

o pior é que tenho. Mas está la em casa. Aqui também tenho outro. é aquele da foto. Mas deste teria que procurar os fontes com +tempo. Acho + rápido fazer outro. Vou baixar seu sw e tentar fazer algo com ele numa simulação proteus com um mc qualquer. A qualquer momento posto aqui.

voce teria o Hardware funcionando?

Não encontrei esquema elétrico na net com esse tipo de varredura.

Na net não tem..... ainda....

Postado

Controla,mas como sempre to atualizando,o HardWare eu não terminei,mas o programa tem esse suporte 'escondido'.

OBS:Esquecí de escrever ,no arquivo texto de explicação,que se deve clickar nos 'Leds',para ativa-los ou não.

Postado

Tambem posso implementar,mas vou precisar criar um HardWare específico.

...ja sei sua ideia...

Ja ví um circuito que gera o painel pela paralela com uma interface.

  • Membro VIP
Postado

amigo vtrx, legal seu programa garoto. Se voce tivesse nascido na época, poderia tê-lo usado. Para compor a matriz usei o fbmcnvtr.exe (google ele) que acho que vem junto com o mikroc não me lembro.

bom, segundo nosso amigo, cá está um feito inédito. Salve a figura e mude a extensão para .zip e abra com o 7-zip. tem um bug para algumas letras minúsculas mas estou preparando a correção/atualização/otimização do cod para um pic18f e quem sabe com sdcc pois este foi feito em hitech-c. No proteus, clique em passo a passo pra ver +- a varredura vertical. No meu pc que é um cp500 com 48k pisca muito devido a velocidade. Com a provavel futura otimização para 18f tende a ficar + estável.

Óbvio que não é pra montar como está e sim só pra ver o funcionamento.

E não precisava ser hc595. poderia ser hc164 que é + simples e quiçá mais barato mas o símbolo dele é grande pra colocar no esquema.

De novo, pode não ser 100% inútil

sucessos!

figura.png

cá está uma outra versão + otimizada para pic18f conforme havia dito. pena que não funcionou com o sdcc. compila sem erros mas não opera de acordo. Bom, ninguém é perfeito. O método de extrair os arquivos é o mesmo.

figurat.png

bom agora posso descansar né

sucessos!

Postado

Esse programa que citou,acho que é o font converter.

o que programaei,foi usado ´para gerar caracteres manualmente,pois queria usar os do zxspectrum.

Sobre a varredura vertical,tentei ver o esquema para ver a quantidade de componentes,mas não da para visualizar.

  • Membro VIP
Postado

ok amigo. este método que uso de compartilhamento de arquivos com figuras não é muito ortodoxo mesmo e realmente não é pra qualquer um. Prefiro não expilcar novamente. Mas se tiver interesse, pergunte ao autor do tópico como ele conseguiu. Pra mim já é suficiente pois ele é o alvo.

Ah e voltei para explicar...

Tem o .cof que voce pode rodar passo a passo no fonte. Carregue-o no MC. Crie um break point na interrupção e verás a varredura vertical se achar interessante.

bom, minha barriga tá roncando... vamo armuçá???

bjs

  • 2 meses depois...
Postado

Olá amigo, é minha primeira vez no forum, mas já percebi que você é fera em programação. Eu estou iniciando com matrizes de led, eu até consigo escrever, fazer figuras e efeitos, mas tudo isso bit a bit e só com uso de delays. Você poderia por favor me ajudar com um código em C para deslocar minhas palavras sem o uso apenas de delays. Valeu!!!

"Pra jogar um sinal 0011

CLK=0;CLK=1;

CLK=0;CLK=1;

DS=1;

CLK=0;CLK=1;

CLK=0;CLK=1;

DS=0;

CP=0;CP=1; "

Está no caminho certo. porém prefira programar o DS PRIMEIRO

DS=1;

CLK=0;CLK=1;

CLK=0;CLK=1;

DS=0;

CLK=0;CLK=1;

CLK=0;CLK=1;

CP=0;CP=1;

Mas que tal evoluirmos um pouco e shiftarmos 8 bits?

#define DS RB0

#define CLK RB1

#define CP RB2

void shift(unsigned char s)

{

unsigned char k;

for (k=0;k<8;k++) //8 bits=1 byte...se não sabia...voce precisa de outro tipo de ajuda

{

DS=s;//o bit ...

CLK=0;CLK=1;//..através do pulso de clock...

s>>=1;//...desloca 8 vezes e...

}

CP=0;CP=1;//...depois trava as saídas

}

Naqueles fontes tem isso mas lhe deve ter passado desapercebido. Também tem o acionamento completo da matriz de leds. No entanto, no momento devem lhe parecer muito complexos. Guarde e aguarde para momentos futuros quando estiver mais maduro (mas nem tanto a ponto de apodrecer como eu. rs)

sucessos!

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!