MTtouchPadShield,
Test 2
Gestion par événements pour Uno, Nano, Mega
setNbTries() et getNbTries()
Ce programme teste les fonction setNbTries et getNbTries.
// Ce progrmme teste la fonction setNbTries() et getNbTries() de l'objet // MTtouchPadShield, et montre que 15 essais par défaut est largement // suffisant. // MTtouchPadShield fait deux mesures de l'abscisse et si les valeurs // obtenues ne sont pas strictement identiques, il procède à une troisième // mesure (deuxième essai). Il fera en tout au maximum "nbEssais" avant // d'abandonner en gardant l'ancienne valeur. Puis MTtouchPadShield fait // pareil pour l'ordonnée. // Il faut lancer le programme et bouger sans arrêt le stylet (par exemple // en tournant en rond). Si le nombre d'essais est suffisant l'affichage // défile car il trouve des valeurs. Si le nombre d'essais avant abandon est // trop petit, l'affichage ralenti, car on ne peut plus lire de valeurs. #include// V1.1.2 Voir http://arduino.dansetrad.fr/MTobjects // Mise en place du touchpad résistif MTtouchPadShield TouchPad; // Mise en place d'une horloge pour changer le nombre d'essais toutes les 5 secondes void change(void) { TouchPad.setNbTries(TouchPad.getNbTries() - 1); // Un essai de moins qu'avant if (TouchPad.getNbTries() == 0) TouchPad.setNbTries(5); // On ne peut pas faire 0 essais! (cala donnerait 256 essais par ailleurs) Serial.println("\n"); // On saute une ligne au moins Serial.print(TouchPad.getNbTries()); Serial.println(" essais"); delay(1000 milli_secondes); } MTclock Horloge (5000 milli_secondes, change); // Initialisation void setup() { Serial.begin(115200); // Mettre aussi la console à la même valeur TouchPad.setNbTries(1); change(); // C'est un MTtouchPadShield qui vérifie que l'on n'est pas en train de lire un écran // Les initialisations suivantes seraient faites par la bibliothèque de l'écran, // comme on n'en a pas, il faut le faire à part // Il faut donc mettre la broche /RD à HIGH, par exemple par une pullup pinMode(A0, INPUT_PULLUP); // Il faut aussi que les broches data 0 et data1 (pins 8 et 9) soient en sortie pinMode(8, OUTPUT); pinMode(9, OUTPUT); } word X, Y, // Coordonnés lus oldX, oldY; // Et mémoire pour ne pas afficher deux fois la même valeur byte colonnes; // Pour afficher sur 16 colonnes le résultat void loop() { // Affichage des coordonnées oldX = X; oldY = Y; // Mémorisation des anciennes valeurs TouchPad.isTouch(); // Bloque les valeurs de X et Y X = TouchPad.getX(); Y = TouchPad.getY(); // Nouvelles valeurs if ((oldX != X) || (oldY != Y)) // On a channgé de coordonnés { // On affiche les nouvelles valeurs par paquet de 16 Serial.print(TouchPad.getX()); Serial.print(" "); Serial.print(TouchPad.getY()); Serial.print(" "); if ((++colonnes) % 16 == 0) Serial.println(); // Une fois sur 16 } }