🛠 Détecter un contact avec les broches tactiles capacitives
Objetivos
Aprovechar la ventaja específica del ESP32-S2: 14 pines táctiles capacitivos por hardware (GPIO1 a GPIO14). Aprende a leer la capacidad con touchRead, calibrar un umbral y activar una acción al tocar con un dedo.
Material
- Placa ESP32-S2
- Cinta de cobre autoadhesiva (o placa metálica, o simplemente un cable de 5 cm)
- 1 LED + resistencia de 330 Ω
- Cables Dupont
Código completo
// 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 demarrage
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);
}
Verificación esperada
Al iniciar, el programa calibra el umbral según el valor en reposo. El monitor serie muestra la capacidad medida; en cuanto el dedo toca la placa de cobre, el valor supera el umbral, el LED se enciende y se muestra « toque=SÍ ». Sin contacto, el LED permanece apagado.
Errores frecuentes
- Elegir un pin fuera de GPIO1-14: solo este rango es táctil en el S2; un
touchReaden GPIO2 devuelve un valor incoherente. - Fijar el umbral en el código sin calibración: la humedad y el cableado desplazan el valor en reposo, calibra siempre al inicio.
- Calibrar con el dedo puesto: el umbral queda distorsionado y ya no se detecta ningún contacto; retira la mano durante
setup. - Cable de toque demasiado largo sin aislamiento: el sensor se vuelve inestable, mantén menos de 10 cm.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino