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.
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
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.
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 |
d' | 294 | 33 |
e' | 330 | 27 |
f' | 349 | 14 |
g' | 392 | 12 |
a' | 440 | 13 |
h' | 494 | 4 |
c'' | 523 | 2 |
// 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:
- Jukebox mit Klingeltönen
- mp3-Player mit dem DFPlayerMini
- mp3-Player mit RFID-Modul
- mp3-Player mit einem mp3-Shield
- Melodien spielen
- Spieluhr mit dem Tastenpad
- Töne erzeugen mit dem Tastenfeld
- UKW-Radio mit dem TEA5767-Modul
- Würfelspiel mit einem mp3-Shield
Letzte Aktualisierung: