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
Tags:
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)
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por