Ardu? No!MTobjectsPour les cartes graphiques ≫ MTtouchPadShield: Test 2

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
  }
}