Colegas, pretendo apenas incluir letras acentuadas: á,é,í,ó,ú,ç,Á,É,Í,Ó,Ú,Ç

Aí fui em c:/documentos/Arduino/Libraries e selecionei a biblioteca de fontes que eu estou utilizando no meu display oled .91" que é a SSD1306Ascii-master

Dentro dela tem a pasta scr/fonts, abri então a fonte que uso no meu sckech, que é a System5x7 (abri no CCS compiler). Fui até a letra A e vi que ela é formada por esta linha:

0x7E, 0x11, 0x11, 0x11, 0x7E, // A

Converti cada bloco hexadecimal para binario e ficou assim:

1111110

0010001

0010001

0010001

1111110

Só para visualizar melhor vamos trocar o 1 por X e o 0 por _

XXXXXX_

__X___X

__X___X

__X___X

XXXXXX_

Vejam que é um A deitado, gire mentalmente 90º para esquerda e verá melhor

Entendendo como funciona eu usei a mesma lógica e fiz um A acentuado Á

Fiz primeiro em binário e converti para hexadecimal:

1111000        XXXX___     0x78

0010100        __X_X__     0x14

0010110        __X_XX_     0x16

0010101        __X_X_X     0x15

1111000        XXXX___     0x78

Substituí a linha pelo A original e salvei com o mesmo nome da fonte: System5x7

0x78, 0x14, 0x16, 0x15, 0x78, // Á

Compilei o sckech e vi que o display OLED agora exibia Á (este que eu fiz)

O PROBLEMA:

Por questões óbvias eu não quero substituir o A por Á, mas sim manter o A original e adicionar 1 linha no código contendo o Á que eu criei.

Só que ao adicionar uma linha a mais, para de funcionar. Repito todo o processo, salvo, compilo, mas não exibe Á. A linha contendo Á simplesmente some no OLED.

E eu notei que no cabeçalho do código da fonte tem uma contagem de char count:

Vejam em anexo o System5x7.h

0x62, // char count,

Era 0x61, mas como eu adicionei 1 linha mudei para 0x62

Mesmo assim não funcionou. 

Alguém tem alguma idéia de por que não está aceitando incluir linha nova ?

Grato

 

Exibições: 491

Anexos

Responder esta

Respostas a este tópico

Bom dia SF,

Porque a linha que você adicionou está comentada? (Com // no inicio).

você lembrou de colocar a virgula no final da linha anterior à linha que você adicionou? 

RV mineirin

Bom dia RV. Sim, lembrei, e o mais estranho ocorreu agora, desci até a linha 142 que é só uma seta que jamais usarei, ali modifiquei os 5 blocos hexadecimais e coloquei os do meu Á. Assim achei que estava com dois A´s vivendo juntos. O A original e o meu Á. Nada feito. No display OLED a linha com Á sumiu. 

A comum original:

0x7E, 0x11, 0x11, 0x11, 0x7E, // A

Á:

0x78, 0x14, 0x16, ox15, 0x78, // Á

Anexei a versão original do System5x7.h

.

.

.

.

.

Versão original

Pelo que pesquisei terei que tentar outra biblioteca, que aceite caracteres UTF-8, acho que é a U8g2. Usei um exemplo dela e coloquei letras acentuadas e mostrou corretamente no display OLED. Avante !

Tentei com a u8g2 mas como eu suspeitava não tem memória no meu arduino uno para ela. É que exibo pequenas frases de um SD CARD num display OLED SSD1306 0.91". No primeiro post que comecei esta discussão relatei em detalhes como eu cheguei até a construção dos pixels de cada caractere numa fonte integrada à biblioteca SSD1306Ascii.h

O problema, eu acho, é que quando o sistema lê do SD CARD não reconhece letras acentuadas pois o ASCII não possui elas.

Q chato !

Para encerrar o domingo deixo um relato ainda mais intrigante. Meu código possuía 1 display oled e um sd card. A tarefa era simples, ler frases curtas no sd card e mostrá-las no display. Funciona, porém palavras acentuadas eram completadas por espaços vazios. Exemplo: "O pátio estava cheio". Era exibido no display assim: "O p" ou seja, tudo depois do á acentuado era suprimido. Ainda não resolvi isso. O que diz foi eliminar do código tudo relativo ao display oled. Comentei tudo. E passei a usar o monitor serial como display. Então ficou só o arduino e o sd card. Aí, para minha surpresa, a mesma frase é exibida assim: O p?tio estava cheio. Ou seja, nem o monitor serial consegue mostrar o caractere á corretamente. Esta frase é a única gravada no sd card, na primeira linha. Não há mais nada além dela no sd card. Alguém arrisca alguma idéia ? 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço