Définition | Utilisation | Exemple | Côté technique |
Le touchpad utilise les mêmes broches que l'afficheur. Pour utiliser le touchpad, il faut mettre l'écran hors communication (/CS=1). Dans cette bibliothèque, vu que le touchpad n'est pas l'organe principal, c'est l'écran qui est sélectionné en permanence par défaut. Plutôt que de sélectionner l'écran à chaque écriture, il reste en permanence sélectionné. Lors de l'appel à isTouch(), l'écran est désélectionné, isTouch() fait son travail, puis l'écran est sélectionné de nouveau.
On pourrait se contenter d'utiliser la dernière méthode pour retourner true ou false pour isTouch(). Mais si la lecture de l'abscisse intervient trop tard, on risque de ne plus pouvoir lire une valeur correcte. On a un point de contact, mais on ne sait pas où! Pour éviter cela, je lis l'abscisse, si il y a contact, et l'ordonnée. Si il y a contact et si j'arrive à lire correctement les coordonnées trois fois de suite la même valeur, alors isTouch() retournera true, et les coordonnées seront prêtes. Mais suivant les écrans, il est possible qu'en faisant 15 boucles, je n'arrive pas à lire la bonne valeur. Si c'est utile, il suffit d'augmenter le nombre de boucles. Le programme suivant va changer la couleur de l'écran quand il n'est pas appuyé (ou que l'on n'arrive pas à avoir une bonne lecture. Il y est écrit ici 50 boucles. On peut changer cette valeur. Si elle est trop faible, l'écran va changer sans arrêt de couleur. Dans certains programmes on se moque de ce "rebond", On peut decendre cette valeur. Dans d'autres ce peut être génant (par exemple si on utilise des boutons Check (bistables) qui à chaque appui vont s'activer et se désactiver plusieurs fois). Il faut alors prendre une valeur suffisnate. PecheuxGraph.zip\PecheuxGraph\examples\Documentation\Exemple-501-isTouch.ino (dans votre fichier téléchargé):
// Ce programme fait clignotter l'écran tant qu'on n'appuie pas dessus
#include <PecheuxGraph.h>
void setup()
{
setGraphMode(PAYSAGE);
text(F("Appuyez sur l'écran pour arrêter le clignottement"));
setLimites(0,32,MAX_X,MAX_Y); // Limite l'effacement de l'écran en dessous du texte
}
void loop()
{
while (isTouchTrue(50)); // Boucle tant qu'on appuie
// si on passe ici, c'est que l'on n'appuie plus
clrscr(getDrawColor()); // Change la couleur du bas de l'écran
}
|