
Das Programm reagiert auf die Touch-Pins des ESP32-Wroom und spielt zu jeder Taste einen Ton der C‑Dur Tonleiter.
So sieht es aus und hört es sich an:

Sollte beim Spielen der Kontakt nicht sofort zustande kommen, feuchte deine Finger ein wenig an.

Der ESP32-Wroom verfügt über Touch-Pins. Sie reagieren auf die Änderungen von elektrischer Kapazität. Je größer die Kapazität, desto kleiner der Messwert. Da der menschliche Körper auch eine Kapazität darstellt, reagieren die Touch-Pins auf Berührung.
Touch-Pins:
32
33
27
14
12
13
4
2
15
Beispiel:
Schließe ein Kabel am Touch-Pin 32 an. Wenn das Kabelende berührt wird, zeigt der Serielle Monitor eine Meldung an.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void setup() { Serial.begin(9600); delay(1000); } void loop() { Serial.print(“Wert: ”); Serial.print(touchRead(32)); if (touchRead(32) < 20) Serial.println(“ -> Pin berührt”); else Serial.println(“ -> Pin nicht berührt”); delay(1000); } |

Für die Realisierung wird neben dem ESP32-Wroom und dem Lautsprecher noch ein wenig Material benötigt:
- 8 Kabel mit Krokodilsteckern an einem Ende und Steckern am anderen Ende
- stabile Pappe
- selbstklebende Kupferfolie, Alufolie, Büroklammern oder andere elektrisch leitfähige Gegenstände
- „doppeltes“ Steckbrett oder Terminaldapter

Leider ist das ESP32-Wroom nicht “steckbretttauglich”. Ich habe daher zwei Steckbretter zu einem zusammengefügt. Es ist wichtig, dass auf einer Seite die Plus- und Minusleiste erhalten bleibt.

Die optimale Position auf dem Steckbrett.
Alternativ kannst du auch einen Terminaladapter verwenden:

Die Anschlüsse



Das Programm ist sehr kurz:
Mit touchRead() wird der Wert des jeweiligen Touch-Pins abgefragt, der Schwellwert des Touch-Pins wird auf 20 festgelegt. Du musst ihn eventuell anpassen.
Die Zuordnung der Frequenzen:

Hier findest du eine 🔗Übersicht (externer Link, abgerufen am 10.9.2023) über alle Frequenzen.
| Note | Frequenz | Touch-Pin |
|---|---|---|
| c’ | 262 | 32 (T9) |
| d’ | 294 | 33 (T8) |
| e’ | 330 | 27 (T7) |
| f’ | 349 | 14 (T6) |
| g’ | 392 | 12 (T5) |
| a’ | 440 | 13 (T4) |
| h’ | 494 | 4 (T0) |
| c” | 523 | 2 (T2) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | // Pin des Lautsprechers #define Lautsprecher 17 // Länge des gespielten Tons #define TonLaenge 500 // Schwellwert des Touch-Pins #define Schwellwert 20 void setup() { // kein setup notwendig} } void loop() { if (touchRead(32) < Schwellwert) tone(Lautsprecher, 262, TonLaenge); // T9 if (touchRead(33) < Schwellwert) tone(Lautsprecher, 294, TonLaenge); // T8 if (touchRead(27) < Schwellwert) tone(Lautsprecher, 330, TonLaenge); // T7 if (touchRead(14) < Schwellwert) tone(Lautsprecher, 349, TonLaenge); // T6 if (touchRead(12) < Schwellwert) tone(Lautsprecher, 392, TonLaenge); // T5 if (touchRead(13) < Schwellwert) tone(Lautsprecher, 440, TonLaenge); // T4 if (touchRead(4) < Schwellwert) tone(Lautsprecher, 494, TonLaenge); // T0 if (touchRead(2) < Schwellwert) tone(Lautsprecher, 523, TonLaenge); // T2 // notwendiges delay, damit sich der Wert wieder normalisieren kann // evtl anpassen um doppelte Töne zu vermeiden delay(200); } |
Verwandte Anleitungen:
Letzte Aktualisierung:






