Présentation de PecheuxGraph

Les drivers

La bibliothèque fonctionne avec les drivers:
- ILI9341
- ST7781
Pour écrire une bibliothèque, il faut disposer d'un écran correspondant. C'est pourquoi cette bibliothèque ne fonctionne qu'avec ces deux drivers. Je projette de gérr aussi les ILI9386.

 

Les cartes

Les shields s'enfichent et sont compatibles à 100% avec les cartes Arduino Uno. Ces shields sont compatibles avec la carte Arduino Mega si on n'utilise pas le lecteur SD (on peut quand même s'en sortir avec). C'est pourquoi cette bibliothèque est écrite pour les cartes Uno et Mega. Elle doit donc aussi tourner avec une Nano, mais les branchements perdent leu intérêt.

 

Le nom de la librairie

Ma bibliothèque PecheuxGraph se décline en deux versions en fonction du driver. Ces deux versions sont donc PecheuxGraph_ILI9341_8bits et PecheuxGraph_ST7781_8bits. 8bits indique un mode de dialoque parallèle 8 bits (peut être un jour, il y aura un SPI à la place). Dans la suite, ces noms seront abrégés en PecheuxGraph.

 

A propos de la carte SD

Sans la carte SD, les programmes de démonstration ne peuvent pas afficher des images. Mais le reste fonctionne parfaitement. Un certain nombre de programmes utilisent un croquis si l'image n'est pas accessible.

 

Caractéristiques principales

Voici quelques caractéristiques de la bibliothèque:
- on peut utiliser 4 modes, paysage, portrait, paysage inversé ou portrait inversé. Les modes "inversés" utilisent une rotation de 180° et permettent ainsi de mettre l'écran physique dans un sens ou dans l'autre (pratique en réalisation).
- dans un mode donné, les images sont affichées sans rotation.
- dans un mode donné, les textes peuvent être écrits dans les 4 directions (sur un même affichage).
- il est possible de limiter les affichages à une portion d'écran.
- les images peuvent être lues ou écrites au format .BMP vraies couleurs (24 bits) non compressées. Un format .BPX est aussi géré qui permet des images 50% plus rapides. - les graphiques n'utilisent pas les objets (économie de place), ce qui permet sur une Uno d'avoir encore de la place pour une gestion événementielle.
- il n'y a qu'une fonte de caractères vectorielle. Elle supporte donc bien les changements de taille, les gras, un pseudo italique.
- la fonte accepte les lettres reconnues par l'IDE, en particulier les minuscules accentuées.
- une gestion des évènements est disponible qui permet de prende en compte des évenement temporels (uniques ou réguliers) et des appuis sur le touchpad (boutons poussoirs, va et vient, boutons radio). Un exemple permet sur une Uno d'utiliser 35 clignotants indépendants pour simuler 35 boules sur un sapin de Noël (250 boules seraient possibles avec une Mega). La bibliothèque est donc peu encombrante.

 

Le système de coordonnés

L'origine de l'écran se trouve en haut à gauche. Les axes sont croissant vers la droite ou vers le bas.

 

Les couleurs

J'ai fait le choix d'utiliser le mode 16 bits (compromis entre, la taille et la vitesse du code, et la qualité). La relation entre couleur et valeur numérique n'est pas triviale, et c'est pour cela que je conseille d'utiliser les constantes définies ainsi que la fonction RGBcolor().

 

Le mode texte

Pour les textes, il y a un curseur (voir image ci-dessus). C'est le point le plus en haut à gauche du prochain caractère qui sera écrit. getTextX() et getTextY() permettent d'obtenir la valeur du curseur; setTextCursor permet de le fixer.

Pour les fonctions graphiques pures (point, cercle, boîte...) la couleur peut être passée dans les paramètres et si elle est omise le tracé se fera avec la dernière couleur utilisée. Pour les fonctions texte, on ne passe pas la couleur dans chaque fonction. Il faudrait sinon passer aussi les paramètres italique, gras, serif... C'est pour cela qu'il y a 6 fonctions pour définir les caractéristiques d'affichage des textes :
textColor() pour choisir la couleur
textSize() pour choisir la taille
textBold() pour le gras
textItalic() pour passer ou revenir du mode italique
textSerif() pour commuter le mode empattement (petits traits en plus sur certains caractères
textOrient() pour choisir le sens de l'écriture

Pour les textes, on peut écrire dans les 4 directions. Le système de coordonnés sera alors différent du système graphique si l'on n'écrit pas vers la droite.

 

Le format .BPX

Pour des images variées, utilisez le format BMP, par contre pour des images fixes (toujours les mêmes), il vaut mieux utiliser le format BPX qui est plus rapide. Pour transformer un BMP en BPX, vous pouvez par exemple dessiner sur l'afficher le BMP et le sauvegarder sous forme de BPX:

bmpDraw("Fichier.bmp"); // Dessine le bitpmap dans le coin
bpxSave("Fichier.bpx",0,0,taille_X,tille_Y); // Sauve le BPX

 

ScreenShoot   <<     >>   Téléchargement