Wie Werte aus Setup in Loop übernehmen

Hallo zusammen,
Ich suche nach einer möglichkeit Werte über funktionen hinweg zu speichern und zu verängern.

Genauer gesagt
Ich möchte einen gesamt Laufzeit wert über EEPROM speichern und abrufen.
Dafür habe ich mir überlegt ein mal im Setup die Gesamtlaufzeit vor dem ausschalten abzurufen und anschließend im Loop die aktuelle Laufzeit drauf zu rechnen und das Ergebnis als neue Gesamtlaufzeit zu spreichern.

Ich möchte also im Setup ein mal eine feste Variable1 Erstellen und anschließend im Loop eine neue Variable2 =(Variable1 + X) erstellen wobei in jedem Loop Variable1 gleich bleibt und sich X erhöht.

(Ist übrigens ein ESP32)

Hier mal mein Aktuelles Programm:

#include <Arduino.h>
#include "EEPROM.h"
#define EEPROM_SIZE 12

int Second=0;
int Oldtime=0; // gespeicherte Gesamtzeit nach dem letzen Lauf

void setup() {
  Serial.begin(115200);
  EEPROM.begin(EEPROM_SIZE);
  int Oldtime=EEPROM.read(0); //Alte Gesamtzeit als Oldtime setzen
}

void loop() {
  long secsUp = millis()/1000;
  Second = secsUp;
  
  int Newtime=Oldtime+Second;  //Neue Gesamtzeit errechnen
  
  EEPROM.write(0, Newtime); //Neue Gesamtzeit Speichern
  EEPROM.commit();

  Serial.println (Second);
  Serial.println (Newtime);
  Serial.println ();
  delay(1000);
  }

Ich weiß nur nicht wie ich den abgerufenen Wert von Oldtime aus dem Setup nun in den Loop übernehme.
So wie es da jetzt steht ist es Falsch. Ich weiß. Da nimmt er im Loop Oldtime als 0 aus dem Kopf an.

Neu abrufen kann ich Oldtime vom EEPROM ja im loop nicht weil er überschrieben wird und die akktuelle Zeit dann doppelt und dreifach addiert wird.

du sollst in setup nicht eine neue int Variable erstellen sondern nimm die globale die du eh vorher angelegt hast.

Oldtime=EEPROM.read(0); //Alte Gesamtzeit als Oldtime setzen

grundsätzlich ist es schon eher bescheiden wenn du jede Sekunde in die EEPROM-Simulation schreibst. Eigentlich schreibt man erst, wenn man den ESP abschaltet...

weiters ist die EEPROM Simulation am ESP32 deprecated.
Nimm "ESP32 Preferences"

Wie noiasca schrieb, preferences ist für neue Entwicklungen der bessere Weg.

In preferences werde ich mich mal reinlesen.
Habe ich noch nie was drüber gelesen. Bin aber auch noch nicht so lange im ESP 32 und EEPROM bereich dabei.

SaveTime = secsUp%305;
  if (SaveTime>300){
  EEPROM.write(0, Newtime); //Neue Gesamtzeit Speichern
  EEPROM.commit

Damit sollte ich die Speicherzeit zumindest erstmal grob auf alle 5min reduziert haben bis ich mich in eine andere Lösung reingelesen habe

secsUp entspricht millis()/1000
Warum ist secsUp vom Type long?

Das fällt Dir auf die Füsse.
Egal was Du da versuchst. Und nein, es liegt nicht am .write()

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.