Étalonnage du touchpad

La fonction touchpad est réalisée avec deux films résistifs et l'Arduino va lire des valeurs en mode analogique. Cela permet une réalisation à moindre coût, pas très fiable, ce qui complique pas mal la bibliothèque (mais ce n'est pas votre problème n'est ce pas!). Tant qu'on utilise des zones assez larges de l'écran pour pointer dessus, on n'a pas besoin d'une grande précision. Mais si l'on veut faire des petits boutons, les différences entre le lieu de pointage et la valeur retenue deviennent problématiques. Mal étalonné, en pointant pile poil sur un bouton, on actionne celui d'à côté. Je fournis un étalonnage par défaut qui suffit bien souvent. Mais pour votre afficheur, cela va dépendre de ses films résistifs. Je note que c'est plus agréable si le réglage est meilleur.

L'étalonnage consiste à ajuster 4 entiers dans le fichier PecheuxGraph.h:

#define TOUCH_X_MIN 125L // Valeurs du convertisseur pour x=0 en mode _PAYSAGE_INVERSE_
#define TOUCH_X_MAX 955L // Valeurs du convertisseur pour x=_largeur_ecran_ en mode _PAYSAGE_INVERSE_
#define TOUCH_Y_MIN 160L // Valeurs du convertisseur pour  y=0 en mode _PAYSAGE_INVERSE_
#define TOUCH_Y_MAX 905L // Valeurs du convertisseur pour  y=_hauteur_ecran_ en mode _PAYSAGE_INVERSE_

Je connais au moins trois méthodes pour enregistrer l'étalonnage:
- le mettre dans des variables locales au programme. C'est ce qui est fait, je crois, avec les bibliothèques existantes. C'est simple, mais il ne faut pas oublier de le mettre dans tous les programmes
- le mettre dans la mémoire eeprom de l'écran, il y a trois octets qui ne servent à rien dans un ST7781, mais pas dans un ILI9341
- modifier l'entête dans un fichier de la bibliothèque. C'est ce que j'ai choisi. Mais il faut modifier l'entête si on remet la bibliothèque en place. Cela donne un plus petit code.

Pour faire cela, lancez le programme PecheuxGraph.zip/PecheuxGraph/examples/Demonstrations/Etalonnage.ino (PecheuxGraph.zip est le fichier de la librairie que vous avez téléchargé). Le programme utilise le mode paysage inversé, car c'est dans cette disposition que sont définies les constantes.

Commencez par déplacer le stylet sur cet écran. Le point lu est matérialisé par une croix. Si le stylet et la croix se superposent correctement, le touchpad est bien étalonné. Si la croix est trop haute, trop basse... Continuez.

Cliquez comme on vous le demande, mais avec un maximum de précision sur la croix.

Puis faites pareil pour la deuxième croix

S'affiche maintenant les valeurs à mettre dans le fichier PecheuxGraph.h de la bibliothèque.

Relancez le programme après avoir mis les nouvelles valeurs dans PecheuxGraph.h (il faut compiler pour prendre en charge les modifications) et vérifiez que la grande croix accompagne bien le stylet. Si ce n'est pas le cas, il faut recommencer, en principe parce qu'un soin insuffisant a été bâclé lors du pointage.

Les valeurs affichées correspondent aux valeurs extrêmes du stylet lu par l'Arduino. Ces constantes vont servir à un calcul pour déterminer les coordonnées écran retournés par getTouchX() et getTouchY(). Par exemple pour les valeurs lues de 122 à 960, les abscisses iront de 0 à 320. Vu l'échelle avec un facteur d'environ 3 pour les abscisses, passer de 960 à 963, va décaler la lecture d'un seul pixel. Les nombres à écrire sont plus précis que ce que l'on est capable de pointer.

 

readData8()   <<     >>   Programmation événementielle