ESP32 – kapazitiver Touch Sensor

In diesem Beitrag möchte ich dir zeigen, wie du einen kapazitiven Touch Sensor am ESP32 in der Arduino IDE programmiert.

Den hier verwendeten Touch Sensor habe ich dir bereits für den Arduino in dem Beitrag Arduino Lektion 92: kapazitiver Touch Sensor vorgestellt.

Der Touch Sensor ist nicht viel größer als eine 1-Cent-Münze und kann sogar durch eine dünne Schicht Holz / Pappe bedient werden.

Benötigte Ressourcen für dieses Projekt

Wenn du die kleine Schaltung nachbauen möchtest, dann benötigst du:

Aufbau der Schaltung

In meiner Schaltung verwende ich drei kapazitive Touch Sensoren, welche wie folgt angeschlossen sind.

Schaltung - ESP32 mit kapazitivem Touch Sensor & LEDs
Schaltung – ESP32 mit kapazitivem Touch Sensor & LEDs

Im nachfolgenden YouTube-Video habe ich dir den Aufbau und die Programmierung in der Arduino IDE ausführlich erläutert.

ESP32 programmieren - kapazitiver Touch-Sensor (TTP223)

Programmieren in der Arduino IDE

Im Programm legen wir zunächst die Felder für die LEDs sowie die kapazitiven Touch-Sensoren an.

#define ledRed 14
#define ledYellow 27
#define ledGreen 16

#define cts1 5
#define cts2 13
#define cts3 12

Damit wir die verbauten LEDs toggeln können, müssen wir uns den Status merken, hierzu nutze ich drei Felder vom Typ Integer.

int ledRedState = 0;
int ledYellowState = 0;
int ledGreenState = 0;

Da die Sensoren sehr empfindlich sind, müssen wir, nachdem ein Kontakt erkannt wurde, eine kleine Pause einlegen, dieses nennt man auch entprellen. Der Wert hierfür wird in einer Konstanten abgelegt.

const int PAUSE = 350;

In der Funktion setup werden die Pins des ESP32 definiert, die Pins der LEDs als Ausgang und die der Sensoren als Eingang.

void setup() {
   pinMode(ledRed, OUTPUT);  
   pinMode(ledYellow, OUTPUT);  
   pinMode(ledGreen, OUTPUT);  

   pinMode(cts1,INPUT);
   pinMode(cts2,INPUT);
   pinMode(cts3,INPUT);
}

In der Funktion loop wird fortlaufend geprüft, ob eines der Sensoren betätigt wurde, wenn dieses so ist, dann wird das Feld umgekehrt und der LED zugewiesen. Danach legen wir eine kleine Pause ein.

  if(digitalRead(cts1) ==HIGH){
    ledYellowState = !ledYellowState;
    digitalWrite(ledYellow, ledYellowState);
    delay(PAUSE);
  }

Das fertige Programm:

#define ledRed 14
#define ledYellow 27
#define ledGreen 16

int ledRedState = 0;
int ledYellowState = 0;
int ledGreenState = 0;

#define cts1 5
#define cts2 13
#define cts3 12

const int PAUSE = 350;

void setup() {
pinMode(ledRed, OUTPUT);  
pinMode(ledYellow, OUTPUT);  
pinMode(ledGreen, OUTPUT);  

pinMode(cts1,INPUT);
pinMode(cts2,INPUT);
pinMode(cts3,INPUT);
}

void loop() {
  if(digitalRead(cts1) ==HIGH){
    ledYellowState = !ledYellowState;
    digitalWrite(ledYellow, ledYellowState);
    delay(PAUSE);
  }

  if(digitalRead(cts2) ==HIGH){
    ledRedState = !ledRedState;
    digitalWrite(ledRed, ledRedState);
    delay(PAUSE);
  }

    if(digitalRead(cts3) ==HIGH){
    ledGreenState = !ledGreenState;
    digitalWrite(ledGreen, ledGreenState);
    delay(PAUSE);
  }
}

Ein Kommentar

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert