Standby manuell in Programmierung schreiben

Hallo allerseits
Ich hab mein ersten TonUINO fertig gestellt. Leider konnte ich erst zuhause die Software aufspielen. Dabei ist mir aufgefallen, das meine Knöpfe nicht funktionieren!
Jetzt krieg ich den Standby nicht im Admin Menü eingestellt

Vom Netz nehmen is auch nicht drin, weil der Akku angelötet ist 🤦🏼

Jetzt wollte ich einfach den Standby Ablaulauf manuell in den Sketch schreiben.

Kann mir jemand sagen wo?

Danke euch schon mal und einen schönen Feierabend

Ich gehe von der DEV Version aus. Du änderst in dieser Zeile:

Das mySettings.standbyTimer in die Minuten die du haben willst. Also für 20 Minuten z.B.: sleepAtMillis = millis() + (20 * 60 * 1000);

Wenn die Knöpfe funktionieren machst du das einfach wieder rückgängig.

Schneller als die Feuerwehr.
Danke für die Express Hilfe!

Wenn das in anderen Foren auch so schnell ginge …

/// Funktionen für den Standby Timer (z.B. über Pololu-Switch oder Mosfet)

void setstandbyTimer() {
  Serial.println(F("=== setstandbyTimer()"));
  if (mySettings.standbyTimer != 05)
    sleepAtMillis = millis() + (05 * 60 * 1000);
  else
    sleepAtMillis = 0;
  Serial.println(sleepAtMillis);

ich habs mal so abgeändert. ich hoff das passt

Warum prefixt du hier eine Null? Das ist unnötig. In der Zeile drüber darf nicht null stehen (was aber default ist), da hast du recht. Oder du änderst es in if (mySettings.standbyTimer == 0).

wenn man keine Ahnung hat, hat man keine Ahnung …
Ich dachte ich sollte die obere Zeile auch ändern.
Ich habs gerade wieder auf 0 geschrieben und lade es gerade hoch.
Mal schauen obs klappt

Wird es nicht, das hatte ich übersehen. Weil der Standbytimer per Default aus ist (also 0). Wird also nie aktiv die Änderung. Änder es entweder auf irgendwas ungleich 0 ab, entferne das ganze If/Else oder änder es in if (mySettings.standbyTimer == 0).

Das beste wird aber sein du reparierst due Buttons! :sweat_smile:

/// Funktionen für den Standby Timer (z.B. über Pololu-Switch oder Mosfet)

void setstandbyTimer() {
  Serial.println(F("=== setstandbyTimer()"));
  if (mySettings.standbyTimer == 0)
    sleepAtMillis = millis() + (5 * 60 * 1000);
  else
    sleepAtMillis = 0;
  Serial.println(sleepAtMillis);
}

Und ja morgen hab ich wieder nen Lötkolben und werd mich um die Taster kümmern …

Ja, so sollte es funktionieren. In 5min biste schlauer. :wink:

leider nein, läuft immer noch …

Ich habe das anders gelöst, indem ich in mySettings den Voreintrag geändert habe. Siehe Zeile
mySettings.standbyTimer = 5;

// *******************************************************
void resetSettings() {                                            // my Settings auf defaultwerte zurücksetzen
  Serial.println(F("=== resetSettings()"));
  mySettings.cookie = cardCookie;
  mySettings.version = 2;
  mySettings.maxVolume = 25;               // max.Lautstärke
  mySettings.minVolume = 5;                // min.Lautstärke
  mySettings.initVolume = 15;              // Start-Lautstärke
  mySettings.eq = 1;                       // Equalizer Normal
  mySettings.standbyTimer = 5;             // Standbytimer auf 5 min
  mySettings.invertVolumeButtons = false;  // Funktion der Vol-Tasten umkehren AUS
  mySettings.shortCuts[0].folder = 0;      // kein Shortcut Pausetaste
  mySettings.shortCuts[1].folder = 0;      // kein Shortcut Vor-taste
  mySettings.shortCuts[2].folder = 0;      // kein Shortcut Rück-taste
  mySettings.shortCuts[3].folder = 0;      // kein Shortcut Welcomesound
  mySettings.shortCuts[4].folder = 0;      // kein Shortcut Weckersound
  mySettings.adminMenuLocked = 0;          // 0 = Adminmenü nicht geschützt, 
                                           // 1 = Schutz durch Adminkarte,  
                                           // 2 = Schutz durch PIN, Reihenfolge von 4 Tastendrücken
  mySettings.adminMenuPin[0] = 1;          // PIN 0 --> erste gedrückte Taste
  mySettings.adminMenuPin[1] = 1;          // PIN 1 --> zweite gedrückte Taste
  mySettings.adminMenuPin[2] = 1;          // PIN 2 --> dritte gedrückte Taste
  mySettings.adminMenuPin[3] = 1;          // PIN 3 --> vierte gedrückte Taste

  writeSettingsToFlash();                  // Settings im EEPROM speichern
}

Dadurch besteht immer noch die Möglichkeit den Standbytimer über das Adminmenü zu ändern, und der Code muss nicht wieder umgeschrieben werden.

Dafür musst du aber die Settings manuell resetten können (geht nicht ohne Knöppe), da resetSettings() nur beim ersten Start ausgeführt wird. Danach erkennt die Firmware anhand des Settings Cookies, daß schon Settings da sind und überschreibt diese sinnvollerweise nicht. Daher meine Idee die eigentliche Abschaltroutine zu tweaken.

Wie gesagt ich würde die Buttons reparieren und jetzt den Akku abziehen, zur Not mit dem Seitenschneider…

Ja, hast du recht. Es funktioniert nur so wenn der Arduino noch jungfräulich ist weil noch keine Settings gespeichert wurden. Da hilft dann nur die „Brechstange“ mit manuellem Kurzschließen der Tasterleitungen. Also besser erst die Taster reparieren.

Ich denke es wird heute Nacht auf einen Belastungstest fürn Akku rauslaufen. Ich hoffe die Ladeelektronik hat ein Tiefentladeschutz.