touche-capacitive.ino
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 4.0 (NXP i.MX RT1062, Cortex-M7 @ 600 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
Avec Teensyduino dans l'Arduino IDE, choisir « Teensy 4.0 », Téléverser puis valider dans le Teensy Loader. Les broches sont en 3,3 V ; le 4.0 est pin-compatible avec le 3.2.
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();
}
}