touch.ino

ESP32-S2 · Archivo : touch.ino · Lenguaje : Arduino · Uso : Utiliser une broche comme touche tactile capacitive

El S2 lleva 14 pads táctiles capacitivos por hardware: touchRead() devuelve un valor que cae cuando un dedo se acerca al cable. Ideal para interfaces sin botones mecánicos, incluso a través de tela fina.

Hardware necesario

Una placa ESP32-S2 (núcleo único Xtensa, Wi-Fi, USB-OTG nativo en GPIO19/20, 14 pads táctiles capacitivos) tipo DevKitC-1 o QT Py, alimentada por USB. Un cable flexible (10-20 cm) o una pastilla de cobre en el pin táctil.

Cableado

Cable pelado en GPIO2. Los 14 pads (GPIO1-14) también valen; evite pines de la flash. Un cable corto ya hace buena antena.

Funcionamiento

El controlador táctil carga/descarga el pin y compara ciclos; el dedo añade capacidad y baja el valor leído. Calibre el umbral en reposo y filtre con histéresis temporal (50 ms). En el Arduino IDE (paquete esp32), elija « ESP32S2 Dev Module »; el S2 se programa directamente por su USB nativo (doble reset en algunas placas para entrar al bootloader).

Para ir más lejos

Tres toques = variador virtual; o una matriz 3x3 bajo cartón para un teclado numérico.

touch.ino

// Tactile capacitif natif du S2 : touchRead() sur GPIO1..GPIO4.
// Approcher le doigt d'un fil nu ou d'une plaque de cuivre sur la broche.
const int TOUCH_PIN = 2;
const int SEUIL = 40;        // a calibrer : voir sortie de setup()

unsigned long precedent = 0;
bool touche = false;

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.println("Calibration : ne touchez a rien pendant 3 s");
  delay(3000);
  Serial.printf("Repos ~ %d, touche ~ %d\n", touchRead(TOUCH_PIN), 0);
}

void loop() {
  if (millis() - precedent < 50) return;
  precedent = millis();
  int v = touchRead(TOUCH_PIN);
  bool maintenant = v < SEUIL;      // toucher fait CHUTER la valeur
  if (maintenant != touche) {
    touche = maintenant;
    digitalWrite(LED_BUILTIN, touche ? HIGH : LOW);
    Serial.printf("%s (touch=%d)\n", touche ? "TOUCHE" : "libre", v);
  }
}

← Volver a la ficha