Problem mit EEPROM

Hallo,
Ich arbeite schon seit ein paar Monaten mit Arduino aber ich stehe jetzt vor einem Problem was ich einfach nicht gelöst bekomme. Ich möchte eine “Tee-Maschine” bauen die Tee eine bestimmte Zeit ziehen lässt. Ich habe einen Poti mit dem ich die Zeit einstellen kann. Mit dem Druck auf Knopf 1 geht der Ziehen-lassen-Prozess los. Zu dieser einfachen Funktion habe ich noch Presets die man mithilfe eines anderen Knopfes mit der aktuellen Minuten Zeit beschrieben wird. Da ich diese Presets auch nach Neustart des Arduino Wieder haben möchte um nicht immer diese neu beschreiben zu müssen hab ich mir mal das oder den EEPROM angeguckt und mir dann da ich einen Integer speichern möchte die byte Low,High Variante angeguckt. ICh habe dann letzendlich den Code von dieser Seite: Eine Integer Zahl in das Arduino EEPROM schreiben und wieder lesen | Shelvin – Elektronik ausprobiert und erläutert in meinen Code eingebaut. Das beschreiben und Auslesen des EEPROMs funktioniert an sich eigentlich da ich beim beschreiben des Presets dieses komplett in den EEPROM schreibe und später wenn ich diesen Wert brauche ihn auch nur von dem EEPROM nehme. Wenn ich nun den Arduino vom Strom nehme und anschließe ist der Wert im EEPROM wieder 0. Jetzt weiß ich nicht mehr was ich tuen soll. Falls jemand einen Fehler hinbezüglich des EEPROM findet wäre es nett wenn er eine Antwort schreibt. Falls jemand noch generell einen Fehler oder eine Verbesserung findet wäre es auch nett wenn er sich meldet.

Danke schonmal im vorraus
Luca

Hier der Code:

#include <EEPROM.h>
#include <Servo.h>
int potiWert = 0; //Wert der potiAuslesung
int minutenZeit = 0; //Wert der für den Benutzer in Minuten gerechnet
int sekundenZeit = 0; // Geleiche Wert in Sekunden for-Schleife
int countdownZeit = 0;
int knopf1 = LOW; // Knöpfe auslesung für starten der Prozesse
int knopf2 = LOW;
int knopf3 = LOW;
int presetKnopf = LOW;
int knopf1Alt = LOW; // Alte Knopf Werte zum vergleichen
int knopf2Alt = LOW;
int knopf3Alt = LOW;
int presetKnopfAlt = LOW;
int preset1 = 0;
int preset2 = 0;
int preset1Adresse = 1;
int preset2Adresse = 3;
int savedPreset1 = 0;
int savedPreset2 = 0;
Servo Servo1;


void setup() {
 Serial.begin(9600);
 Servo1.attach(7);
 pinMode(6,INPUT);
 pinMode(5,INPUT);
 pinMode(4,INPUT);
 pinMode(3,INPUT);
 pinMode(2,OUTPUT);
 Servo1.write(9);
 
}


void loop() {
 digitalWrite(2,LOW);
 potiWert = analogRead(A0); // Alles Auslesen der Werte
 knopf1 = digitalRead(6);
 knopf2 = digitalRead(5);
 knopf3 = digitalRead(4);
 presetKnopf = digitalRead(3);
if(potiWert > 100){    // Umrechnerei damit keine Null ensteht
 minutenZeit = potiWert/100;
}
else{
 minutenZeit = 1;  
}
 Serial.println(minutenZeit); // Ausgabe der Minuten im Serial Monitor für den Benutzer

if(presetKnopf == HIGH && knopf2 == HIGH && knopf2Alt == LOW){
 preset1 = minutenZeit; 
 knopf2Alt = knopf2;
 presetKnopf = presetKnopfAlt;
 eepromWriteInt(preset1Adresse,preset1);
 Serial.print("Preset 1:");
 Serial.println(preset1);
 delay(3000);
}

if(presetKnopf == HIGH && knopf3 == HIGH && knopf3Alt == LOW){
 preset2 = minutenZeit; 
 knopf3Alt = knopf3;
 presetKnopf = presetKnopfAlt;
 eepromWriteInt(preset2Adresse,preset2);
 Serial.print("Preset 2:");
 Serial.println(preset2);
 delay(3000);  
} 

if(knopf1 == HIGH && knopf1Alt == LOW){
 sekundenZeit = minutenZeit*60;
 teeDipping(); // Start des Ziehen-lassen Prozesses
}

if(knopf2 == HIGH && knopf2Alt == LOW){
 if(preset1 != 0){
  preset1 = eepromReadInt(preset1Adresse);
  sekundenZeit = preset1*60;
  teeDipping(); // Start des Ziehen-lassen Prozesses
 }
 else{
   Serial.println("Preset 1 ist Leer");
   delay(3000);
 }
}

if(knopf3 == HIGH && knopf3Alt == LOW){
 if(preset2 != 0){
  preset2 = eepromReadInt(preset2Adresse);
  sekundenZeit = preset2*60;
  teeDipping(); // Start des Ziehen-lassen Prozesses
 }
 else{
  Serial.println("Preset 2 ist Leer");
  delay(3000);  
 }
 
}



 knopf1Alt = knopf1;
 knopf2Alt = knopf2;
 knopf3Alt = knopf3;
 presetKnopfAlt = presetKnopf;
}


void teeDipping(){
 digitalWrite(2,HIGH);
 Servo1.write(179);
 
for (int i = 0; i<=sekundenZeit; i++){
 countdownZeit = sekundenZeit-i;
 Serial.print("Noch ");
 Serial.print(countdownZeit);
 Serial.println(" Sekunden");
 delay(1000);
}

 
 Servo1.write(9); 
}
void eepromWriteInt(int adr, int wert) {
byte low, high;
 low=wert&0xFF;
 high=(wert>>8)&0xFF;
 EEPROM.write(adr, low); // dauert 3,3ms 
 EEPROM.write(adr+1, high);
 return;
} //eepromWriteInt

void eepromUpdateInt(int adr, int wert) {
byte low, high;
 low=wert&0xFF;
 high=(wert>>8)&0xFF;
 EEPROM.update(adr, low); // dauert 3,3ms 
 EEPROM.update(adr+1, high);
 return;
} //eepromWriteInt

int eepromReadInt(int adr) {
byte low, high;
 low=EEPROM.read(adr);
 high=EEPROM.read(adr+1);
 return low + ((high << 8)&0xFF00);
} //eepromReadInt

Der Sketch ist so nicht lesbar.
Bitten formatiert und in Code-Tags hier posten.
Schaltfläche </> oben links im Editor-Fenster verwenden.

Du musst im Setup Deinen gespeicherten Wert wieder aus dem EEPROM einlesen, wenn Du ihn weiter benutzen willst.

Gruß Tommy

HotSystems:
Der Sketch ist so nicht lesbar.
Bitten formatiert und in Code-Tags hier posten.
Schaltfläche </> oben links im Editor-Fenster verwenden.

Werde mich drum kümmern

SwanUp:
Werde mich drum kümmern

Das kannst du auch noch nachträglich im Anfangspost machen.

Tommy56:
Du musst im Setup Deinen gespeicherten Wert wieder aus dem EEPROM einlesen, wenn Du ihn weiter benutzen willst.

Gruß Tommy

Hat funktioniert

Vielen dank
Luca

Prima. Du solltest aber trotzdem noch Dein Posting editieren, um die Codetags zu setzen.

Gruß Tommy