Version 2.1dev: Lautstärke durch langes Drücken der Tasten geht nicht

Ja, so viele habe ich auch nicht davon. Aber zwei bis drei hab ich immer auf Vorrat, auch für andere Projekte.

Annahme: Problem liegt bei der Zeile

Denn mySettings.invertVolumeButtons wird bei

am Anfang auf True gesetzt.

Gleichzeitig ist FIVEBUTTONS ja nicht per Default gesetzt.

Aber war nur ein kurzer Blick auf dem Handy.

Ja genau darauf bin ich auch gerade gestoßen. Bin gerade dabei das zu verifizieren.
So, Ich habe das mal gecheckt.
Egal welcher Wert in void resetSettings() mySettings.invertVolumeButtons steht, true oder false , wird im ser Monitor bei Programmstart der letzte vom Adminmenü gesetzte Wert angezeigt. Auch das Resetten des Arduino über das Adminmenü, oder das drücken der 3 Tasten beim Einschalten ändert diesen Wert nicht.
Einzig eine Umstellung über das Adminmenü führt zu einer Änderung des Wertes.
Die anderen Werte wie min Lautstärke usw. werden aber korrekt auf die defaultwerte gesetzt.
Ich habe auch mal versucht den Wert in void resetSettings() mySettings.invertVolumeButtons auf 0 oder 1 zu setzen, mit gleichem Ergebnis.

Was tun sprach Zeuss, die Götter sind besoffen!!

02.01.20
Weiterführend habe ich das ganze jetzt noch mal mit einem jungfräulichen Nano probiert.
Als erstes im Code nochmal in void resetSettings() mySettings.invertVolumeButtons den Wert auf false gesetzt.
Code aufgespielt und im ser Monitor die Werte ausgelesen. Siehe da, jetzt sind sie korrekt übernommen worden.
Ich denke mit dem Ändern des Defaultwertes für invertVolumeButtons auf false sollte das Problem nun behoben sein.
Was mich nur wundert ist, dass beim Löschen des EEPROMS über die drei Tasten beim Einschalten des Tonuinos die Werte nicht korrekt übernommen werden. Resetten über das Adminmenü funktioniert.

Hi @stephan
Ich habe es jetzt gelöst. Siehe meinen letzten Post.
Gruß Thomas

Ersteres ruft loadSettingsFromFlash() auf, letzteres direkt resetSettings(). Wahrscheinlich liegt der Bug irgendwo da. Müsstest du mal ein paar debug prints einbauen und die Ausgaben checken was da im einzelnen genau passiert.

Hallo @stephan
Ich denke, dass Ich den Grund für das fehlverhalten beim Resetten durch die drei Tasten beim Einschalten gefunden habe. Das Problem lag daran, dass der EEPROM nicht mit den Defaultwerten, sondern mit den letzten aktiven mySettings beschrieben wurde. Das simple Einfügen von
resetSettings();
Im Setup führte zum Erfolg.
Hier noch mal die gesamte Funktion mit der Änderung.
// *************** Manueller Reset beim Einschalten *************************

  // RESET --- ALLE DREI KNÖPFE BEIM STARTEN GEDRÜCKT HALTEN -> alle EINSTELLUNGEN werden gelöscht
  if (digitalRead(buttonPause) == LOW && digitalRead(buttonUp) == LOW &&
      digitalRead(buttonDown) == LOW) {
    Serial.println(F("Reset -> EEPROM wird gelöscht"));
    for (int i = 0; i < EEPROM.length(); i++) {
      EEPROM.update(i, 0);
    }
    resetSettings();
    loadSettingsFromFlash();
  }

Nach dem seriellen Monitor wird der EEPROM da jetzt scheinbar 2 mal geschrieben, aber die Werte sind dann auf jeden Fall auf default.

IMHO kannst doch loadSettingsFromFlash(); einfach weglassen oder?

Yep, Habs in Kommentar gesetzt. Funkst.
Hab noch ein kleines Feedback eingebaut. Erforderte aber ein delay, was aber eh nur beim Manuellen Resetten wirksam wird und sonst nicht stört.

// RESET --- ALLE DREI KNÖPFE BEIM STARTEN GEDRÜCKT HALTEN -> alle EINSTELLUNGEN werden gelöscht
  if (digitalRead(buttonPause) == LOW && digitalRead(buttonUp) == LOW &&
      digitalRead(buttonDown) == LOW) {
    Serial.println(F("Reset -> EEPROM wird gelöscht"));
    for (int i = 0; i < EEPROM.length(); i++) {
      EEPROM.update(i, 0);
    }
    resetSettings();
    //loadSettingsFromFlash();
    mp3.playMp3FolderTrack(999);    //Reset wurde durchgeführt!
    delay(5000);
    
  }

Ich danke euch. Wo kann ich den aktuellen Code finden? Schon in ein GitHub Repo gepusht? Habe auch gesehen, dass es so einige Forks und Pull Requests gibt, die interessante Änderungen beinhalten.

Hallo @alexander.willner
Schau mal in der Rubrik Tips und Tricks. Da habe ich einen Beitrag gepostet „Kurzes Resumee…“.
Da ist ein Ondrivelink drin mit „“"MEINER VERSION !!! „“ des Tonuino. Diese basiert auf der Standart DEV . Ich habe soweit alles was für mich von Interesse darin integriert. Wenn du meine Version verwenden willst, musst du auch die advert und mp3 Ordner von mir mit verwenden. Diese sind zwar abwärtskompatibel zu der Standart DEV aber für meine Version sind ein paar zusätzliche Sounddateien enthalten.
Der letzte FIX mit dem Resetten der Einstellungen ist da aber noch nicht drin.

Danke dir. Habe die Datei Tonuino-DEV-mit_LED_Animation-19-12-30.ino gefunden. Allerdings scheint bspw. mySettings.invertVolumeButtons noch auf true gestellt zu sein. Ich habe den Fix einmal unter https://github.com/AlexanderWillner/TonUINO/commits/DEV eingespielt - und hier auch den einen oder anderen Pull-Request integriert. Ich fürchte Änderungen in einer Datei auf einem Onedrive werden es nicht ins DEV-Repository ohne weiteres finden…