Hallo @DonJupp
Ich habe mir mal Gedanken zu deinem Wunsch gemacht und kann folgende Lösung präsentieren.
So, wie versprochen nun hier der Code und die Schaltung.
Bei der Schaltung handelt es sich um den Gesamtschaltplan Meines Tonuino.
Das heißt, das da Hardwareerweiterungen drauf sind, die für dieses Thema nicht relevant sind.
Der Schaltungsteil betreffend dieses Beitrages ist die Beschaltung mit und um Q5, Q6,R12 und R13.
Der Schaltungsteil mit Q3, Q4 ist für die Lautsprecherabschaltung und würde dann einfach weggelassen und der LSP direkt mit Anschluss 2 an den DFplayer spk 2 angeschlossen werden.
So hier der Code:
Am Anfang hinter der #define Five buttons
folgendes einfügen
#define SQuite // In der Lautstärkeeinstellung Wert 1 wird ein zusätzlicher Widerstand in der
// Lautsprecherleitung aktiviert, um die Lautstärke noch mehr zu reduzieren.
// Hardwareerweiterung erforderlich.
// ------------------------------------------------------------------------------------------------
Dann bei der Zuweisung der Pins einfügen
#ifdef SQuite
#define SQuitePin A6 // Ausgangspin für Ansteuerung SuperQuite Schaltung
#endif
Dann vor
// DFPlayer Mini
SoftwareSerial mySoftwareSerial(2, 3); // RX, TX
uint16_t numTracksInFolder;
uint16_t currentTrack;
die Zeilen
#ifdef SQuite
bool SQactive = false ; // Superquite nicht aktiv
#endif
einfügen.
Dann im setup , nach den Buttonpins das einfügen,
#ifdef SQuite
pinMode(SQuitePin, OUTPUT); // Ausgang SuperQuite
digitalWrite(SQuitePin, HIGH); // SuperQuite nicht aktiv
#endif
Dann ebenfalls im setup, vor der RESET Funktion das einfügen
// ********************* Superquite ***************************************
#ifdef SQuite
if(volume != 1){
SQactive = false ; // Superquite nicht aktiv
digitalWrite(SQuitePin, HIGH); // Vorwiderstand Lautsprecher überbrückt
}
else {
SQactive = true ; // Superquite aktiv
digitalWrite(SQuitePin, LOW); // Vorwiderstand Lautsprecher aktiv
}
#endif
Und zu guter letzt im loop am Anfang nach der do Anweisung , unter geschweifte Klammer
das einfügen
// ********************* Superquite ***************************************
#ifdef SQuite
if(volume != 1){
SQactive = false ; // Superquite nicht aktiv
}
else {
SQactive = true ; // Superquite aktiv
}
if(SQactive == false) { // Superquite nicht aktiv
digitalWrite(SQuitePin, HIGH); // Vorwiderstand Lautsprecher überbrückt
}
else{ // Superquite aktiv
digitalWrite(SQuitePin, LOW); // Vorwiderstand Lautsprecher aktiv
}
#endif
Dieser Code sorgt dafür, dass nur in der Lautstärkestufe 1 der zusatzwiderstand vor dem Lautsprecher
aktiv wird. Bei den anderen Lautstärkestufen wird er über die beiden MOSFETS praktisch Kurzgeschlossen.
Mit R12 der als Trimmpoti ausgelegt sein kann, kann man dann die Lautstärke einstellen die man in der Stufe 1 haben will. Auf die anderen Lautstärken wirkt sich das nicht aus. Im Adminmenü muss dann natürlich die Min Lautstärke auch auf 1 gesetzt werden, sonst wird das Ganze nicht wirksam.
Also wenn du noch Interesse an der Lösung hast, Viel Spaß beim Ausprobieren.
Falls du das so realisierst, würde ich mich über ein Feedback freuen.
Gruß Thomas