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.
- Sensoren & Module – TTP223, MP3-Modul & mehr
- Mikrocontroller-Boards – UNO R3, Nano V3 und ESP32
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.