Musik mit den Touch-Pins des ESP32-Wroom

Lese­zeit: 4 Minu­ten

Lösung
Seite als PDF

Das Pro­gramm reagiert auf die Touch-Pins des ESP32-Wroom und spielt zu jeder Tas­te einen Ton der C-Dur Tonleiter.

So sieht es aus und hört es sich an:

Soll­te beim Spie­len der Kon­takt nicht sofort zustan­de kom­men, feuch­te dei­ne Fin­ger ein wenig an.

Der ESP32-Wroom ver­fügt über Touch-Pins. Sie reagie­ren auf die Ände­run­gen von elek­tri­scher Kapa­zi­tät. Je grö­ßer die Kapa­zi­tät, des­to klei­ner der Mess­wert. Da der mensch­li­che Kör­per auch eine Kapa­zi­tät dar­stellt, reagie­ren die Touch-Pins auf Berührung.

Touch-Pins:
32
33
27
14
12
13
4
2
15

Bei­spiel:
Schlie­ße ein Kabel am Touch-Pin 32 an. Wenn das Kabel­en­de berührt wird, zeigt der Seri­el­le Moni­tor eine Mel­dung 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 Rea­li­sie­rung wird neben dem ESP32-Wroom und dem Laut­spre­cher noch ein wenig Mate­ri­al benötigt:

  • 8 Kabel mit Kro­ko­dil­s­te­ckern an einem Ende und Ste­ckern am ande­ren Ende
  • sta­bi­le Pappe
  • selbst­kle­ben­de Kup­fer­fo­lie, Alu­fo­lie, Büro­klam­mern oder ande­re elek­trisch leit­fä­hi­ge Gegenstände
  • „dop­pel­tes“ Steck­brett oder 

Lei­der ist das ESP32-Wroom nicht "steck­brett­taug­lich. Ich habe daher zwei Steck­bret­ter zu einem zusam­men­ge­fügt. Es ist wich­tig, dass auf einer Sei­te die Plus- und Minus­leis­te erhal­ten bleibt.

Lei­der ist das ESP32-Wroom nicht "steck­brett­taug­lich. Ich habe daher zwei Steck­bret­ter zu einem zusam­men­ge­fügt. Es ist wich­tig, dass auf einer Sei­te die Plus- und Minus­leis­te erhal­ten bleibt.

Die opti­ma­le Posi­ti­on auf dem Steckbrett.

Alter­na­tiv kannst du auch einen Ter­mi­nal­ad­ap­ter verwenden:

Die Anschlüs­se

Board instal­lie­ren

Das Pro­gramm ist sehr kurz:
Mit touch­Read() wird der Wert des jewei­li­gen Touch-Pins abge­fragt, der Schwell­wert des Touch-Pins wird auf 20 fest­ge­legt. Du musst ihn even­tu­ell anpassen.

Die Zuord­nung der Frequenzen:

Hier fin­dest du eine 🔗Über­sicht (exter­ner Link, abge­ru­fen am 10.9.2023) über alle Frequenzen.

NoteFre­quenzTouch-Pin
c'26232
d'29433
e'33027
f'34914
g'39212
a'44013
h'4944
c''5232
// 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);
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 4. Dez 2023 @ 16:17