Kopfhörerbuchsenplatine

Um einen kleinen Beitrag beizusteuern, habe ich den folgenden Code geschrieben, den man so in die aktuelle Version übernehmen könnte. Der wird nur aktiviert wenn man das JACKDETECT rauskommentiert. Habe mich da an dem FIVEBUTTON Mode orientiert.
Wenn Kopfhörer eingesteckt werden, wird eine Initiale Lautstärke für Kopfhörer aktiviert. Gleichzeitig kann im Kopfhörermodus nicht über eine festgelegte Lautstärke erhöht werden. Wenn man die Kopfhörer rausgesteckt wird alles wieder zurückgesetzt.

Bei mir funktioniert es aber ich würde mich freuen, wenn jemand den Code testen könnte.

Edit: Ein Jumperkabel geht vom JD der Kopfhörerbuchsenplatine zu einem offenen Digitalen Pin an Thorsten’s Platine, in meinem Fall Pin 8.

/* ------------------------->  Vor dem Setup   <---------------------------- */

// uncomment the below line to enable jack detected max volume support
// #define JACKDETECT

#ifdef JACKDETECT
  // Definition des Jackdetect Pins
  #define jdPin 8
#endif

#ifdef JACKDETECT
  // Variablen für Prüfung des Kopfhöreranschlusses
  int jdMaxVolume = 15 ;     // Maximale Lautstärke wenn Kopfhörer angeschlossen ist
  int jdInitVolume = 10 ;     // Initiale Lautstärke wenn Kopfhörer angeschlossen ist
  int jackDetectState = HIGH ;         // aktueller Status - ob Kopfhörer angeschlossen ist
  int lastJackDetectState = HIGH;     // vorhergehender Status - ob Kopfhörer angeschlossen ist
  int beforeJackdetectVolume = 10;     // Lautstärke bevor Kopfhörer angeschlossen wurden
  int beforeJackdetectMaxVolume = 10;     // Maximale Lautstärke bevor Kopfhörer angeschlossen wurden
#endif

/* ------------------------->  Im Setup   <---------------------------- */

#ifdef JACKDETECT
  // JackDetect Pin
  pinMode(jdPin, INPUT_PULLUP);
#endif

/* ------------------------->  Im Loop   <---------------------------- */

#ifdef JACKDETECT
 // Prüfung und Aktualisierung des Köpfhöreranschlusses
  
  // Aktuellen jackdetect Status einlesen
  jackDetectState = digitalRead(jdPin);
 
  // Vergleich zwischen aktuellem und vorhergehendem Status
  if (jackDetectState != lastJackDetectState) {
    // Wenn Status sich geändert hat
    if (jackDetectState == LOW) {
      // Wenn aktueller Stauts LOW, dann ist der Kopfhörer angeschlossen
      beforeJackdetectVolume = volume;       // Speichern der Lautstärke bevor Kopfhörer angeschlossen wurden
      beforeJackdetectMaxVolume = mySettings.maxVolume;     // Speichern der aktuellen Maximalen Lautstärke - bevor Kopfhörer angeschlossen sind
      mySettings.maxVolume = jdMaxVolume;    // Maximale Lautstärke auf Kopfhörermodus geändert
      volume = jdInitVolume;    // Aktivieren der Initialen Lautstärke bei Anschluss der Kopfhörer - wenn rauskommentiert, wird die maximale Lautstärke im Kopfhörermodus gesetzt 
      Serial.println(F("Köpfhörer angeschlossen"));
    } else {
      // Wenn aktueller Stauts HIGH, dann ist der Kopfhörer ausgesteckt
      mySettings.maxVolume = beforeJackdetectMaxVolume;    // Maximale Lautstärke zurücksetzen
      volume = beforeJackdetectVolume;
      // volume = mySettings.initVolume; // Alternativ kann man die Initiale Lautstärke beim entfernen des Kopfhörers einstellen lassen
      Serial.println(F("Köpfhörer ausgesteckt"));
    }
  }
  // Speichern des akuellen Status als letzten Status für den nächsten Loop
  lastJackDetectState = jackDetectState;
#endif
6 „Gefällt mir“