touche-capacitive.ino

Teensy 3.2 · Fichier : touche-capacitive.ino · Langage : Arduino · Usage : Détecter un doigt sur une broche grâce à touchRead (spécifique Teensy)

touchRead() est la fonction signature de Teensy : elle mesure la capacité d'une broche et détecte un doigt posé sur un simple fil, sans circuit 555 ni plaque capacitive dédiée. Idéal pour des interfaces tactiles improvisées.

Matériel requis

Un Teensy 3.2 (NXP Kinetis MK20DX256, Cortex-M4 @ 72 MHz, logique 3,3 V) alimenté par USB. Un fil électrique nu (10-20 cm) ou une petite plaque métallique sur la broche 0 ; LED sur 13.

Câblage

Fil capteur sur la broche 0 (à rien d'autre), LED + 330 Ω sur 13 vers GND (3,3 V).

Fonctionnement

touchRead() renvoie une valeur sans contact proche de zéro et de plusieurs centaines avec un doigt. L'hystérésis est assurée par le seuil et l'état mémorisé.

Exécution

Installer le plugin Teensyduino dans l'Arduino IDE, choisir la carte « Teensy 3.2 », cliquer sur Téléverser puis sur le bouton du Teensy Loader. Attention : broches en 3,3 V.

Variantes

Plusieurs broches en capteurs (un tableau de valeurs) pour un pavé numérique capacitif, ou piloter un son via la bibliothèque Audio.

touche-capacitive.ino

// touchRead() : la broche devient un capteur capacitif sans circuit.
// Fonctionne sur une grande partie des broches Teensy (voir doc).
const int TOUCHE = 0;   // broche capteur (fil nu ou plaque metallique)
const int LED = 13;
const int SEUIL = 500;  // a calibrer avec la sortie serie

unsigned long derniereMesure = 0;
bool touche = false;

void setup() {
  pinMode(LED, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (millis() - derniereMesure >= 50) {
    derniereMesure = millis();
    int valeur = touchRead(TOUCHE); // sans contact ~0, doigt ~500-1000

    Serial.print(F("touch = "));
    Serial.print(valeur);
    if (valeur > SEUIL && !touche) {
      touche = true;
      digitalWrite(LED, HIGH);
      Serial.print(F("  -> TOUCHE"));
    } else if (valeur < SEUIL && touche) {
      touche = false;
      digitalWrite(LED, LOW);
    }
    Serial.println();
  }
}

← Retour à la fiche