Da die Hardware von mir kommt, sei an der stelle erwähnt, dass es um eine mini-Platine mit der Kopfhörerplatine uda1334 geht. Es wird also ein Port-Expander verwendet.
Von der Hardware ist es so, dass dass die Erkennung, ob ein Kopfhörer eingesteckt ist, vom Port-Expander (PE) gemacht wird. D.h. wir haben hier einen Pin am PE, der einen internen PullUp-Widerstand besitzt, so dass wir ein definiertes Spannungsniveau haben, wenn kein Kopfhörer eingesteckt ist. Es gibt allerdings zusätzlich einen solchen PullUp-Widerstand auf der Kopfhörerplatine.
Die Buchse der Kopfhörerplatine (PJ306b) besitzt zwei potentialfreie Schaltkontakte - nur einen davon verwende ich.
- R17 und R19 werden nicht verwendet, das hatte ich nur als Option mir offengelassen.
- HP_DETECT geht zu einem Pin an den PE, der als Eingang konfiguriert ist
- MUTE geht zu einem Pin an den PE, der als Ausgang konfiguriert ist (schaltet den UDA1334 ab)
Steckst du jetzt den Kopfhörer ein, so wird Anschluss 6 über 7 auf GND gezogen, weil der symbolisierte Schalter umswitcht. Dadurch wird HP_DETECT auf LOW gezogen, was der PE erkennt. Der ESP32 „erfährt“ es dann und „sagt“ dem PE, dass er MUTE auf LOW schalten soll. Das schaltet den UDA1334 ein und den MAX98357a aus (die gehen mit LOW/HIGH also invers um).
Ich vermute, dass dein Problem da liegt, dass du auf Pin 7 kein GND angeschlossen hast. GND braucht es auf 1+7.