Le VMA412, afficheur graphique

Pourquoi un afficheur?

Je voudrais une perforatrice autonome. Pour cela, il me faut forcément une possibilité de dialoguer avec la perforatrice pour pouvoir choisir le fichier à perforer, mais aussi pour régler la machine, faire les tests...

Une solution classique quand on ne veut pas payer cher est un bon vieil afficheur 2 ou 4 lignes de texte avec des boutons associés. Vu les prix, j'ai vite opté pour un afficheur graphique sensitif. Le prix est sensiblement le même, mais les possibilités sont plus importantes. Un afficheur sensitif dispense de mettre des boutons, et ça a quand même une autre tête!

Un juste milieu est l'afficheur 320x240. Parmi toute la panoplie d'afficheurs il se présentait à moi trois possibilités:
- afficheur avec un dialogue série, ce qui permet de dialoguer sur peu de fils et laisse pas mal de broches libre pour piloter les moteurs. Le dialogue est alors un peu plus compliqué, mais la vitesse d'affichage devrait en souffrir. Je n'ai pas suffisamment d'informations à ce sujet.
- afficheur parallèle, il y en a des tas, mais la plus part sont en 3,3V ce qui pose des problèmes d'adaptation des tensions entre la carte arduino et l'afficheur. Il faut une interface et si l'afficheur ne fonctionne pas du premier coup, il sera difficile de savoir si c'est de la faute de l'interface ou du programme.
- afficheur shield pour arduino. C'est la solution que j'ai choisie car mécaniquement, il suffit d'embrocher l'afficheur sur la carte micro.

Pour l'instant je n'ai pas encore de données concernant les afficheurs série. J'ai juste fait le calcul que pour effacer un écran complet en mode 16 bits, il faut transférer environ 150.000 octets. A la vitesse de 500.000 bauds, cela fait quand même 3 secondes. Cela me semble long.

 

le VMA412.

J'ai été attiré par la pub qui indique qu'il faut 10 minutes pour avoir un premier résultat. J'ai été cherché chez le fabricant Velleman. Voici ce que l'on trouve:

Ecran tactile pour Arduino UNO/MEGA Premier petit mensonge: cet afficheur est effectivement 100% compatible avec la carte Uno, même si les logiciels qui sont fournis avec ne fonctionnent pas tous. Par contre si l'afficheur et le touchpad fonctionnent directement avec la carte MEGA, il n'en est pas de même avec la partie lecteur de carte intégrée. Pour faire la fonctionner avec une carte MEGA, il faut utiliser les broches 50 à 53 au lieu des broches 10 à 13, et mécaniquement ce n'est pas possible. Il est possible de dévier les bonnes broches, on perd alors l'enfichage direct, mais à ce tarif on pourrait dire que c'est aussi compatible avec une carte nano!

Résolution: 240(H) x 320(V) C'est largement suffisant pour mes applications. Je note quand même que l'on peut faire travailler facilement en mode portrait et en mode paysage. Il suffit presque de changer les mots abscisse et ordonnée dans la programmation du pilote.

Display driver: ILI9341 V0.7 Pas facile à vérifier par lecture car il faut décoller les deux parties de l'afficheur pour voir le composant. Le gros problème est que le premier que j'ai acheté n'a pas un pilote à base de ILI9341 mais un ST7781. Entre ces deux circuits il y a des ressemblances, mais les différences sont telles qu'un programme écrit pour l'un ne fonctionne pas pour l'autre. Et évidemment tous les essais que j'ai fait au début ne fonctionnaient pas! Mais le dernier afficheur que m'a gracieusement offert R.A.M. à Paris comporte bien un ILI9341. Au passage le revendeur Lextronix a retiré de sa pub le nom du circuit après mon coup de fil. Les deux afficheurs, celui avec un ILI9341 et celui avec le ST7781 sont strictement identiques y compris les dessins, le logo... Avoir un afficheur à ILI9341 est donc vrai ou faux selon le revendeur.

262 000 couleurs Pour avoir autant de couleurs, il faut être en mode 18 bits, ce qui n'est pas terrible avec l'Arduino qui est en 8 bits. Si on accepte de diminuer le nombre de couleurs on peut passer en 16 bits (65000 couleurs). C'est ce que j'ai fait.

Inerface système Il y aurait 9 interfaces différentes. Mais si c'était le cas, les broches qui permettent ce choix seraient accessibles. Ce n'est pas le cas, la seule interface accessible est le mode "8 bits 8080I series MCU". Quels menteurs!

Mode d'affichage Il y a trois modes couleurs 262000, 65000 et 8 couleurs. Le mode 8 couleurs n'a d'intérêt que pour baisser la consommation de l'afficheur. Et c'est le rétroéclairage qui consomme le plus. Cela ne me passionne pas. Seul le mode 65000 couleur me préoccupe. Je note aussi que la bibliothèque officielle n'utilise que ce mode.

Température de service Vous n'allez tout de même pas penser que j'ai essayé?

Téléchargements Il y a dans cette rubrique tout un tas d'exemples. Pour moi, la moitié ne fonctionnaient pas, j'ai vu sur le net que je n'étais pas le seul à le dire! C'est aussi une raison qui me pousse à écrire moi même la bibliothèque.

 

Simple à mettre en œuvre

Avant que vous ne me posiez la question, il faut qu'on parle des broches libres. Il faut savoir que l'afficheur et le touchpad utilisent les mêmes broches. Il est donc impossible d'utiliser en même temps les deux dispositifs. Mais c'est comme ceux qui croient que leur ordinateur est multitâche: on bascule de l'un à l'autre suffisamment rapidement pour faire croire que les deux objets sont utilisés ensembles.

Avec un UNO: l'arduino à 17 broches d'entrée/sortie. Si l'on utilise la broche "chip select" de l'afficheur pour lui signifier de la mettre en veilleuse, il reste alors 15 broches libres pour les moteurs et les lasers (je dis 15 car il faudra une broche pour dire aux moteurs et aux lasers de se la couler douce). On ne peut alors pas utiliser l'afficheur et les moteurs en même temps, mais c'est parfaitement faisable. Un problème vient aussi que la bibliothèque graphique occupe beaucoup de place mémoire. Il en reste peu pour gérer les moteurs. C'est pourquoi je préfère la solution MEGA. Cela me laisse suffisamment de broches libres.

Pour ce qui est des connexions avec un UNO, une vidéo vaut mieux qu'un long discours:


dansetrad.fr Contactez-moi