collapse

* Posts Recentes

O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Arduino + LCD Nokia 3310! - PCD8544 / OM6206  (Lida 134415 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline joaopedrocmp

  • Mini Robot
  • *
  • Mensagens: 246
Re: Arduino + LCD Nokia 3310! - PCD8544 / OM6206
« Responder #225 em: 19 de Setembro de 2014, 01:42 »
Boas Pessoal,

Estive a ver mais um pouco sobre os caracteres que usamos neste Lcd, a intenção é criar fonts maiores que os caracteres do exemplo que o tr3s fez.

Ao início pensei que fazendo imagens com o FastLCD e converter para código com o LCDAssistant, e imprimindo no lcd 2 imagens uma a seguir a outra, o que se passou foi que onde nao é impresso a cor o lcd poe a branco, mesmo que tenha já alguma coisa impressa, logo apaga o numero anterior.

Depois de uma pesquisa no google vi que os caracteres sao constituidos por 35 pixeis/bits , dispostos por 7 linhas e 5 colunas (7x5), cada coluna forma um byte (conjunto de 5 bits) e 5 bytes formam umcaracter.

Retirado do array de caracteres do tr3s:
{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a


pc screenshot

Para fazer uma fonte maior por exemplo 28x20, decidi fazer da mesma maneira e obtive para o numero 9 o seguinte:


image hosting 5mb

Coluna 1  - 0000000000000000111100000000
Coluna 2  - 0000000000000111111111100000
Coluna 3  - 0000000000001111111111110000
Coluna 4  - 0000000000011111111111111000
Coluna 5  - 0000000000111111111111111100
Coluna 6  - 0000000001111111111111111110
Coluna 7  - 0000000001111111111111111110
Coluna 8  - 0000000011111111111111111111
Coluna 9  - 0011100001111111000011111111
Coluna 10 - 0011111000001110000001111111
Coluna 11 - 0011111111000010000001111111
Coluna 12 - 0111111111111000000001111111
Coluna 13 - 0111111111111111000011111111
Coluna 14 - 0111111111111111111111111111
Coluna 15 - 0111111111111111111111111110
Coluna 16 - 0001111111111111111111111110
Coluna 17 - 0000011111111111111111111100
Coluna 18 - 0000000011111111111111111000
Coluna 19 - 0000000000011111111111110000
Coluna 20 - 0000000000000111111111100000

Convertido em HEX (chamei nokiamegabyte)

Código: [Seleccione]
byte nokiamegabyte[][20] = {
         0xf00 , 0x7fe0 , 0xfff0 , 0xfff8 , 0xfffc , 0xfffe , 0xfffe , 0xffff , 0xf0ff , 0xe07f , 0x207f , 0x807f , 0xf0ff , 0xffff , 0xfffe , 0xfffe , 0xfffc , 0xfff8 , 0xfff0 , 0x7fe0}

 Para o imprimir usei parte do putchr():

Código: [Seleccione]
for (char i = 0; i < 20; i++){
    writedata(nokiamegabyte[0][i]);
  }

Entretanto não aparece tudo no display.

adult photo sharing


Qual será o problema?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Arduino + LCD Nokia 3310! - PCD8544 / OM6206
« Responder #226 em: 19 de Setembro de 2014, 01:58 »
Para começar, estás a "enfiar" 16bits numa variavel que só suporta 8 bits( que é o byte), é o que dá o IDE do arduino não mostrar warnings..
Avr fanboy

Offline joaopedrocmp

  • Mini Robot
  • *
  • Mensagens: 246
Re: Arduino + LCD Nokia 3310! - PCD8544 / OM6206
« Responder #227 em: 19 de Setembro de 2014, 02:16 »
Boas,
então quer dizer que não dá para fazer damaneira que fiz?
« Última modificação: 19 de Setembro de 2014, 02:37 por joaopedrocmp »

Offline joaopedrocmp

  • Mini Robot
  • *
  • Mensagens: 246
Re: Arduino + LCD Nokia 3310! - PCD8544 / OM6206
« Responder #228 em: 20 de Setembro de 2014, 13:33 »
Alguém?

Offline joaopedrocmp

  • Mini Robot
  • *
  • Mensagens: 246
Re: Arduino + LCD Nokia 3310! - PCD8544 / OM6206
« Responder #229 em: 23 de Setembro de 2014, 00:27 »
Bem, novidades...

Depois do que o senso disse, resolvi dividir a imagem linhas, cada uma com 8bit



ficou assim:

1ºlinha:  {0x0, 0xE0, 0XF0, 0XF8, 0XFC, 0XFE, 0XFE, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFE, 0XFE, 0XFC, 0XF8, 0XF0, 0XE0}
2ºlinha:  {0XF, 0X7F, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XF0, 0XE0, 0X20, 0X80, 0XF0, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X7F}
3ªlinha:  {0X0, 0X0 , 0X0 , 0X1 , 0X3 , 0X7 , 0X7 , 0XF , 0X7 , 0XE0, 0XFC, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0X7F, 0XF , 0X1 , 0X0 }
4ºlinha:  {0X0, 0X0 , 0X0 , 0X0 , 0X0 , 0X0 , 0X0 , 0X0 , 0X3 , 0X3 , 0X3 , 0X7 , 0X7 , 0X7 , 0X7 , 0X1 , 0X0 , 0X0 , 0X0 , 0X0 }

Para imprimir a imagem no ecran tive que alterar um bocadinho
Código: [Seleccione]
  cursorxy(0,0);                                 // posição do cursor
  for (char c = 0; c < 4; c++){             // nova variável para a coluna
    cursorxy(0,c);
    for (char i = 0; i < 20; i++){
    writedata(mega[c][i]); // Vai buscar o byte ao array de caracteres e envia-o para o LCD
  }
  }
  writedata(0x00);                             // Espa?amento de um pixel entre cada caracter



o array dos caracteres vi ter 3 dimenções. onde coloco o caracter, a linha, e os bit's da imagem.

Agora, nova duvida, no meio do codigo tive que por a função cursorxy(0,c) neste caso o y é "0",
no caso de antes ter definido cursor(1,0) em cima, como posso fazer para em baixo no cursorxy(0,c), ir buscar o valor que está em cima?