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