MTpushZone,
zone poussoir
Bibliothèque graphique pour shield Uno/Mega
Un objet MTpushZone est l'équivalent d'un bouton poussoir sur une zone de touchpad.
Cet object n'appartient pas à la bibliothèque PxGraph, mais est un objet de la bibliothèque MTobjects à cause de la gestion par interruption. Mais il n'a d'intérêt qu'avec une bibliothèque graphique comme celle-ci. C'est pourquoi il est décrit dans ces pages et les exemples intéressants utilisent aussi PxGraph.
Include à rajouter
#include <MTobjects.h> // Voir http://arduino.dansetrad.fr/MTobjects
Je conseille fortement de laisser le commentaire, si une autre personne voulait essayer le programme, elle aurait directement un lien de téléchargement. C'est valable pour toutes les bibliothèques que vous utilisez.
Commentaires utiles
x_mini y_mini x_maxi y_maxi
Ces commentaires sont des mots que l'on peut rajouter n'importe où et qui sont ignorés par le compilateur.
Constructeur
MTpushZone(x_mini int xMini, y_mini int yMini, x_maxi int xMaxi, y_maxi int yMaxi, // Coordonnée de la zone à cliquer
void (*drawFunction)(boolean, x_mini int, y_mini int, x_maxi int, y_maxi int) = PAS_D_ACTION, // Pour se dessiner
void (*onSelectFunction)(void) = PAS_D_ACTION, // Si on appuie sur la zone
void (*onUnselectFunction)(void) = PAS_D_ACTION); // Si n'appuie pas sur la zone
- xMini, yMini, xMaxi, yMaxi (int): coordonnées de la zone
- drawFunction: fonction permettant de dessiner la zone
- PAS_D_ACTION → Aucune fonction n'est prévue
- fonction → appel d'une fonction "void fonction(boolean appui, int xMini, int yMini, int xMaxi, int yMaxi) {...}" appui vaut false si on ne clique pas sur la zone, les autres paramètres passés sont les coordonnés de la zone
- onSelectFunction: ce qui se passe quand on appuie sur le touchpad
- PAS_D_ACTION → rien ne se passe
- fonction → appel d'une fonction "void fonction(int x, int y) {...}" Les paramètres passés sont les coordonnés du point de contact.
- onUnselectFunction: ce qui se passe quand on vient de ne plus toucher le touchpad
- PAS_D_ACTION → rien ne se passe
- fonction: → appel d'une fonction "void fonction(void) {...}"
Fonctions utiles
boolean isTouch(void); void draw(void);
isTouch: renvoie true si un stylet est appuyé sur la zone
draw: dessine la zone
Fonctions bonus
setDrawFunction(void (*drawFunction)(boolean, x_mini int, y_mini int, x_maxi int, y_maxi int) = PAS_D_ACTION); void setOnSelectFunction(void (*onSelectFunction)(void) = PAS_D_ACTION); void setOnUnselectFunction(void (*onUnselectFunction)(void) = PAS_D_ACTION);;
setDrawFunction: change la fonction appelée si on veut dessiner la zone
setDrawFunction: sans paramètres supprime la fonction appelée pour dessiner la zone
setOnSelectFunction: change la fonction appelée lors d'un appui dans la zone
setOnSelectFunction: sans paramètres supprime la fonction appelée lors d'un appui dans la zone
setOnUnselectFunction: change la fonction appelée lors de la sortie de la zone ou du soulèvement du stylet
setOnUnselectFunction: sans paramètres supprime la fonction appelée lors de la sortie de la zone ou du soulèvement du stylet
Initialisation
On peut déclarer l'objet en tout début de programme. A ce moment-là, la bibliothèque graphique n'est pas encore en place et il n'est pas possible de dessiner l'objet. La fonction setGraphMode() prend environ 180ms, il faut qu'elle soit terminée avant le dessin de la MTpushZone. Pour cela, il faut assez tôt initialiser l'écran en mettant plutôt setGraphMode() en début de setup(). Le dessin d'initialisation des MTpushZone est retardé d'environ 250ms. Si l'initialisation intervient trop tard, il faudra appeler la fonction MTpushZone.draw() manuellement.
Exemples