TTP223 Touch-Sensor mit Arduino auslesen: Berührungssteuerung für LEDs, Dimmer & Soundboards

Mechanische Taster nutzen sich ab, klappern und lassen Wasser oder Staub eindringen. Der TTP223 kapazitive Touch-Sensor kennt dieses Problem nicht: Eine simple Berührung mit dem Finger genügt, um ihn auszulösen – völlig geräuschlos und wartungsfrei. In diesem Tutorial baust du damit einen Touch-Schalter, einen Toggle-Dimmer und ein kleines Touch-Soundboard.

Warum kapazitives Touch statt mechanischer Taster?

Ein normaler Taster schließt einen Stromkreis mechanisch – mit der Zeit oxidieren Kontakte, Federn ermüden und Feuchtigkeit kann eindringen. Der TTP223 arbeitet dagegen kapazitiv: Er erkennt die winzige Änderung der elektrischen Kapazität, die entsteht, sobald dein Finger sich einer leitfähigen Fläche nähert. Das funktioniert sogar durch dünnes Plastik oder Glas hindurch – ideal für sauber verschlossene Gehäuse, wie sie z. B. unser ESP32-Acrylgehäuse bietet.

Anders als beim kapazitiven Bodenfeuchtesensor, der eine analoge Kapazitätsänderung in einen Spannungswert umwandelt, gibt der TTP223 direkt ein digitales Signal aus – HIGH bei Berührung, LOW ohne. Das macht ihn extrem einfach anzusteuern: Du brauchst keinen Analogpin und keine Kalibrierung.

Was du brauchst

Bauteil Menge ca. Preis Link
TTP223 Touch-Sensor (10er-Set) 1 Set ab 1,99 € Zum Produkt
UNO R3 Board 1x ab 4,99 € Zum Produkt
3mm LED Sortiment (100er Box) 1 Box ab 4,49 € Zum Produkt
600x Widerstände-Sortiment 1 Set ab 5,99 € Zum Produkt
MP3 Player Modul mit Verstärker 1x (für Projekt 3) ab 2,49 € Zum Produkt
Breadboard 400 Kontakte 1x ab 3,49 € Zum Produkt

Schaltungsaufbau

TTP223 Pin UNO R3 Pin Funktion
VCC 5V (2V–5,5V toleriert) Spannungsversorgung
GND GND Masse
SIG / OUT / I/O Pin 2 Digitales Ausgangssignal (HIGH bei Berührung)

⚙️ Betriebsmodus per Lötbrücke einstellen

Auf der Rückseite des TTP223-Moduls findest du zwei kleine Lötpads, mit denen sich das Verhalten anpassen lässt:

  • Modus A (Standard, unberührt): Ausgang folgt direkt der Berührung – HIGH solange der Finger auf dem Pad liegt
  • Modus B (Toggle, Lötbrücke schließen): Jede Berührung schaltet den Ausgang dauerhaft um – praktisch, aber für dieses Tutorial lösen wir Toggle lieber flexibel per Software

Für die folgenden Codebeispiele bleibst du im Standardmodus A und regelst Toggle-Logik direkt im Sketch.

Code 1: Einfacher Touch-Schalter für eine LED

Der Einstieg: Solange du das Sensorpad berührst, leuchtet die LED. Kein Entprellen nötig – der TTP223 liefert bereits ein sauberes digitales Signal.

const int TOUCH_PIN = 2;
const int LED_PIN = 8;

void setup() {
  pinMode(TOUCH_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  int beruehrt = digitalRead(TOUCH_PIN);

  if (beruehrt == HIGH) {
    digitalWrite(LED_PIN, HIGH);
    Serial.println("Beruehrt!");
  } else {
    digitalWrite(LED_PIN, LOW);
  }
}

So funktioniert's

Der TTP223 liefert bereits ein entprelltes, digitales HIGH/LOW-Signal – anders als bei mechanischen Tastern brauchst du also keine zusätzliche Softwarelogik gegen Kontaktprellen. digitalRead() genügt vollständig.

Code 2: Toggle-Schalter mit Flankenerkennung

Statt "an solange berührt" wollen wir jetzt "an bei erster Berührung, aus bei nächster Berührung" – wie ein klassischer Lichtschalter. Dafür erkennen wir die steigende Flanke des Touch-Signals.

const int TOUCH_PIN = 2;
const int LED_PIN = 8;

bool ledStatus = false;
bool letzterZustand = LOW;

void setup() {
  pinMode(TOUCH_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  bool aktuellerZustand = digitalRead(TOUCH_PIN);

  // Steigende Flanke: von LOW auf HIGH gewechselt
  if (aktuellerZustand == HIGH && letzterZustand == LOW) {
    ledStatus = !ledStatus;
    digitalWrite(LED_PIN, ledStatus ? HIGH : LOW);
    Serial.println(ledStatus ? "LED AN" : "LED AUS");
    delay(50); // kurzes Software-Debounce gegen Doppelausloesung
  }

  letzterZustand = aktuellerZustand;
}

Die Variable letzterZustand merkt sich den Signalpegel aus dem vorherigen Durchlauf. Nur wenn das Signal gerade erst von LOW auf HIGH gewechselt ist, wird umgeschaltet – hältst du den Finger länger auf dem Pad, passiert nichts weiter. Das ist die Grundlage für fast jede Touch-basierte Menüsteuerung.

Code 3: Touch-Soundboard mit mehreren Sensoren

Mit mehreren TTP223-Modulen und dem MP3 Player Modul baust du ein einfaches Soundboard – jede Berührung spielt einen anderen Sound. Das MP3-Modul wird per seriellen Kommandos angesteuert (UART-Protokoll, kompatibel zu gängigen DFPlayer-Bibliotheken).

#include <SoftwareSerial.h>
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mp3Serial(10, 11); // RX, TX zum MP3-Modul
DFRobotDFPlayerMini mp3;

const int ANZAHL_SENSOREN = 3;
const int touchPins[ANZAHL_SENSOREN] = {2, 3, 4};
bool letzterZustand[ANZAHL_SENSOREN] = {LOW, LOW, LOW};

void setup() {
  Serial.begin(9600);
  mp3Serial.begin(9600);

  for (int i = 0; i < ANZAHL_SENSOREN; i++) {
    pinMode(touchPins[i], INPUT);
  }

  if (!mp3.begin(mp3Serial)) {
    Serial.println("MP3-Modul nicht gefunden!");
    while (true);
  }
  mp3.volume(20); // 0-30
  Serial.println("Soundboard bereit.");
}

void loop() {
  for (int i = 0; i < ANZAHL_SENSOREN; i++) {
    bool aktuellerZustand = digitalRead(touchPins[i]);

    if (aktuellerZustand == HIGH && letzterZustand[i] == LOW) {
      Serial.print("Sensor ");
      Serial.print(i + 1);
      Serial.println(" ausgeloest - spiele Track");
      mp3.play(i + 1); // spielt 001.mp3, 002.mp3, 003.mp3 von der SD-Karte
      delay(50);
    }

    letzterZustand[i] = aktuellerZustand;
  }
}

Jeder der drei Sensoren bekommt einen eigenen Eintrag im touchPins-Array und wird in der loop() unabhängig auf eine steigende Flanke geprüft. Lege dazu einfach nummerierte MP3-Dateien (001.mp3, 002.mp3 ...) auf eine Micro-SD-Karte im MP3-Modul – fertig ist dein Touch-Soundboard, z. B. für ein DIY-Spielzeug oder eine barrierefreie Klingel mit mehreren Sounds.

Praxisprojekte

💡 Berührungsloser Lichtschalter: Ersetze mechanische Taster in Lampenprojekten durch ein TTP223-Modul hinter der Gehäusewand – wasserabweisend und ohne bewegliche Teile.

🎨 Touch-Klavier: Baue mit mehreren Sensoren und einem Buzzer oder Relais ein einfaches Touch-Instrument mit mehreren Tönen.

🔒 Geheime Code-Eingabe: Nutze eine Reihe von Touch-Sensoren als berührungsempfindliches Zahlenfeld für eine einfache Zugangskontrolle – kombinierbar mit dem Relais-Modul zum Öffnen eines Schlosses.

Häufige Fehler

⚠️ Sensor löst ständig von selbst aus: Metallische Gehäuseteile oder feuchte Umgebungen in der Nähe des Sensorpads können Störungen verursachen. Halte das Pad frei von leitfähigen Materialien in direkter Nähe.

⚠️ Toggle schaltet mehrfach bei einer Berührung: Das Signal kann beim Übergang minimal flackern. Ein kurzes delay(50) nach jeder erkannten Flanke (wie in Code 2 gezeigt) verhindert Doppelauslösungen zuverlässig.

⚠️ Kein Signal trotz Berührung: Prüfe, ob VCC wirklich zwischen 2V und 5,5V liegt und der SIG-Pin nicht versehentlich als OUTPUT statt INPUT konfiguriert wurde.

🔧 Baue deine eigene Touch-Steuerung

Alle Bauteile für dieses Projekt findest du bei makeroo.

Kombiniere den Touch-Sensor mit unserem Relais-Tutorial, um echte Lampen oder Geräte berührungslos zu schalten.

Fazit

Der TTP223 macht Berührungssteuerung so einfach wie ein digitalRead() – ganz ohne Entprellung oder Kalibrierung. Von einem simplen Touch-Schalter über Toggle-Logik bis zum Soundboard mit mehreren Sensoren zeigen die drei Codebeispiele, wie vielseitig sich dieser günstige Sensor einsetzen lässt.

Zurück zum Blog