🛠 Détecter un contact avec les broches tactiles capacitives
Objectifs
Exploiter l'atout spécifique de l'ESP32-S2 : 14 broches tactiles capacitives matérielles (GPIO1 à GPIO14). Apprendre à lire la capacité avec touchRead, calibrer un seuil et déclencher une action au contact d'un doigt.
Matériel
- Carte ESP32-S2
- Ruban de cuivre autocollant (ou plaque métallique, ou simple fil de 5 cm)
- 1 LED + résistance de 330 Ω
- Câbles Dupont
Code complet
// Tactile capacitif sur ESP32-S2 (GPIO1 a GPIO14 seulement)
const uint8_t TACT_PIN = 4; // broche tactile capacitive
const uint8_t LED_PIN = 2;
uint16_t seuil = 0; // calibre au démarrage
void setup {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
delay(500);
uint32_t somme = 0;
for (int i = 0; i < 50; i++) { somme += touchRead(TACT_PIN); delay(5); }
seuil = somme / 50 + 2000; // valeur au repos + marge
Serial.printf("Seuil calibre : %u\n", seuil);
}
void loop {
uint16_t valeur = touchRead(TACT_PIN);
bool touche = valeur > seuil;
digitalWrite(LED_PIN, touche ? HIGH : LOW);
static uint16_t derniere = 0;
if (abs((int)valeur - (int)derniere) > 100) { // limite le spam
Serial.printf("touch=%u touche=%s\n", valeur, touche ? "OUI" : "non");
derniere = valeur;
}
delay(50);
}
Vérification attendue
Au démarrage, le programme calibre le seuil sur la valeur au repos. Le moniteur série affiche la capacité mesurée ; dès que le doigt touche la plaque de cuivre, la valeur dépasse le seuil, la LED s'allume et « touche=OUI » s'affiche. Sans contact, la LED reste éteinte.
Erreurs fréquentes
- Choisir une broche hors GPIO1-14 : seule cette plage est tactile sur le S2 ; un
touchReadsur GPIO2 renvoie une valeur incohérente. - Seuil figé dans le code sans calibration : l'humidité et le câblage déplacent la valeur au repos, calibre toujours au démarrage.
- Calibrer le doigt posé : le seuil est alors faussé et aucun contact n'est plus détecté ; retirez la main pendant
setup. - Fil de touche trop long sans isolation : le capteur devient instable, gardez moins de 10 cm.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino