J'ai testé pour vous: 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 en souffre. Le code est aussi plus volumineux
- 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 choisi car mécaniquement, il suffit d'embrocher l'afficheur sur la carte micro.

 

le VMA412.

J'ai été attiré par la pub qui indique qu'il faut 10 minutes pour avoir un premier résultat. Voici cet afficheur (pub venant de Lextronix):

C'est assez curieux: il manque quelque chose derrière "System inteface". J'ai été cherché chez le fabricant Velleman. Voici ce que l'on trouve:

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 "vertical" et "horizontal" dans la définitions du pilote.

Display driver: ILI9341 V0.7 Pas facile à vérifier car il faut décoller les deux parties de l'afficheur. C'est aussi la donnée manquante sur le revendeur! Le gros problème est que celui que j'ai acheté n'a pas un pilote à base de ILI9341 mais un ST7781. C'est sans doute pour cela que Lextronic a retiré le nom! Entre ces deux pilotes 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! En cherchant à comprendre, et en analysant les librairies, j'ai fini par écrire un premier programme pour lire logiciellement le nom du pilote. Le programme se trouve ici. Pour faire marcher ce programme, ouvrez le moniteur série. La ou tout est compliqué, c'est que mon afficheur répond "7783", et que la documentation du ST7783 est introuvable. Je me suis basé sur le ST7781, et ils semblent compatibles.

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! Cet en mode 8 bits, il faut 17 broches pour l'afficher, la carte SD et le tactile. Du coup, avec un uno, il reste 2 broches libres. Soit on met un UNO pour l'affichage et un UNO pour mes moteurs. L'autre solution est de prendre un MEGA. Je fais d'abord les test avec un UNO, puis je m'intéresserai au MEGA.

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. Cela ne me passionne pas. Seul le mode 65000 couleur me préoccupe. Je note aussi que la librairie officielle n'utilise que ce mode.

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

 

Simple à mettre en oeuvre

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. 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.

Pour ca qui est des connexions, une vidéo vat mieux qu'un long discours:


dansetrad.fr Contactez-moi