Caractères spéciaux écran TFT ILI9486 sur Mega

Hello :slight_smile:

J'essaie d'afficher des caractères spéciaux français (é, à, ù...) sur un écran ILI9486 mais avec connexion "bus parallèle 16 bits" (Hailege 3,5 pouces IPS TFT LCD Écran ILI9486/ILI9488 480x320 36 Pins MEGA : Amazon.fr: Commerce, Industrie et Science) sur un Arduino MEGA.

A cause de la particularité de la connexion parallèle et/ou du Mega, je n'arrive pas à faire fonctionner Adafruit GFX et U8G2 qui me permettrait d'afficher a priori facilement ces caractères.

Par contre j'arrive à afficher du texte avec TFT_HX8357 (ainsi qu'avec LCDWIKI) mais là je n'arrive pas à intégrer de police avec ces caractères (je peux mettre mon code mais c'est globalement l'exemple qui vient avec la librairie). TFT_HX8357 possède pourtant la capacité d'intégrer les GFX Free Fonts mais je suis un peu perdu sur comment avoir une police avec les caractères que je cherche !

Merci d'avance pour votre aide !

Bonjour Mysterarts

J'ai posé ta question à ChatGPT :wink:

Je n'ai pas le matériel, donc je ne peux essayer.

Cordialement
jpbbricole

Hello jpbbricole !
Merci pour ta réponse :slight_smile:
Malheureusement ChatGPT me suggère d'utiliser la librairie que j'ai essayé mais contrairement à ce qu'il dit, la police FreeSerif9pt7b ne contient pas les caractères accentuées, comme toutes celles fournies avec Adafruit GFX.

Avec la librairie GFX il y a un sous-répertoire fontconvert avec des outils pour créer tes propres librairies.
Des explications ici

Hello fdufnews, merci pour ta réponse et ce lien :slight_smile:
Pour l'instant j'avoue que même avec les explications, je suis un peu perdu sur la manière de la créer. Mais surtout, j'ai vu que la bibliothèque ne prenait en compte que les caractères UTF8 jusqu'à 127, donc je risque de ne pas pouvoir afficher mes caractères non ?

Non, on peut aller jusqu'à 255 mais évidemment le fichier avec la police va devenir volumineux. Il faut se limiter au strict nécessaire.

Les lettres accentuées et les symboles qu'utilise l'IDE d'Arduino ne sont pas codés sur un octet, mais sur 2 ou 3. Si on définit les caractères après le 127, il faudra quand on reçoit un caractère transformer les deux octets reçus en un. Par exemple si on définit "é" et qu'on lui affecte le caractère 128, il faudra quand on reçoit les 2 octets 195 puis 169 renvoyer 128.
On n'est pas en ascii étendu ou les lettres accentuées sont sur un seul octet.

Bonjour

Pour avoir bon caractère et voir les noms des caractères et leurs différents types d'encodages possibles, j'utilise cette page web

Lire aussi, et avant tout, la page Wikipedia concernant Unicode

Hello,
Merci pour vos réponses ! J'ai essayé de me pencher sur ces histoires d'encodages mais je n'ai pas réussi à générer une police GFXFF qui les contenaient (en partant des existantes je n'avais que des affichages étranges).

Je me suis tourné vers un autre système, celui de UTFT qui génère des polices à partir d'une image, ce qui est plus facile à conceptualiser pour moi :slight_smile:
http://www.rinkydinkelectronics.com/r_fonts.php#google_vignette
Je suis partie d'une de ces polices et j'ai remplacé les caractères spéciaux peu utilisés par é, à, ù etc. Voici les fichiers si ça intéresse des gens :
Arial_round_FR_16x24
Arial_round_FR_16x24.c (23.5 KB)

Il suffit de glisser le .c dans le répertoire de son code puis

#include <UTFT.h>
extern uint8_t Arial_round_FR_16x24[];
//...
myGLCD.setFont(Arial_round_FR_16x24);

Et j'ai fait une petite fonction un peu crade pour remplacer les caractères spéciaux. Pas très élégants mais je donne ici les "replaces" pour gagner du temps si vous voulez utiliser mon fichier :

replace("é","#");
replace("è","$");
replace("û","_");
replace("ë","^");
replace("à","{");
replace("ê","}");
replace("ù","|");
replace("ô","]");
replace("ç","~");

Bref je suis arrivé à mes fins même si c'est un peu du bricolage ^^

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.