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

Anexos

Responder esta

Respostas a este tópico

DESCOBERTA ANTES DE DESLIGAR TUDO POR AQUI = O arquivo TXT que estava gravado no SD CARD e que estava sendo lido não havia sido salvo com codificação UTF-8. Era isso.

Boa semana !

BOM DIA. Alguém consegue postar um código que faça isso ?

Toda vez que meu display oled vai exibir um caractere acentuado vindo de um arquivo lido num cartão de memória (uft-8), ele apaga toda a linha depois do caractere acentuado, inclusive ele. Exemplo: O pátio estava cheio. Aí aparece assim no oled: O p (só isso). Apaga tudo que teria à frente do á acentuado.

Se tivesse como apagar só o caractere que não foi reconhecido, substituindo ele por espaço em branco talvez deixasse meu sistema tolerável. Ficaria assim: O p_tio estava cheio.

Desta forma, toda vez que se deparasse com estes caracteres trocaria por espaço vazio e é claro exibiria o restante da frase: á,ã,é,í,ó,ú,ç,Á,Ã,É,Í,Ó,Ú,Ç

 

Consegui resolver usando a font utf8font10x16 (esta aceita acentuação)

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço