MTtouchPadShield: Exemple 3
Dessin avec getX()
Bibliothèque graphique pour shield Uno/Mega
Sans utiliser les fonctions callback, on se tourne vers une programmation plus traditionnelle. loop() doit être utilisée; ne pas être bloquante, et doit être courte.
Bien entendu, comme pour tous les exemples, il faut changer PxGraph_ILI9341_Shield en PxGraph_ST7781_Shield si le driver est un ST7781.
// Ce programme permet de tracer le déplacement du stylet en utilisant getX et getY #include <MTobjects.h> // V1.2.0 Voir http://arduino.dansetrad.fr/MTobjects #include <PxGraph_ILI9341_Shield.h> // V1.0.0 Voir http://arduino.dansetrad.fr/PxGraph_ILI9341_Shield // Mise en place du touchpad résistif pour la mise à jour des coordonnés MTtouchPadShield TouchPad; boolean crayonLeve; // true si on a levé le stylet // Initialisation void setup() { // Initialisation de la bibliothèque graphique de l'écran setGraphMode(PAYSAGE); // La ligne suivante doit être corrigée par le résultat de l'étalonnage (Exemple-600-Etalonnage-shield) TouchPad.calibrate(PAYSAGE, largeur_ecran 320, hauteur_ecran 240, x_gauche 941, y_haut 924, x_droite 135, y_bas 305); crayonLeve = true; text("Dessinez sur l'écran"); // Ecriture de la consigne sur l'écran } int x, y; void loop() { if (TouchPad.isTouch()) // Bloque la lecture de x et de y { // On trace if (crayonLeve) // On recommence un nouveau tracé { x=TouchPad.getX(); y=TouchPad.getY(); // getY débloque la lecture // line(TouchPad.getX(), TouchPad.getY(), TouchPad.getX(), TouchPad.getY()); // Ne fonctionnerait pas // car getX ou getY pourraient avoir changé entre les deux lectures // Cela peut fonctionner si le compilateur optimise et ne fait qu'un seul appel à getX et getY line(x, y, x, y); // Prépare lineTo crayonLeve = false; } else // On continue le tracé lineTo(TouchPad.getX(), TouchPad.getY()); // Dessine un ligne Jusqu'à... } else crayonLeve = true; }