Ich scheiter am EEprom

Hallo liebes Forum, ich verzweifel an der EEprom funktion :frowning:

Ich bin noch relativ Frisch im geschehen und manche sachen habe ich noch nicht 100% drauf , da hoffe ich auf Nachsicht. :wink:

Jetzt zu meinem Problem, ich will mit dem Rotary Encoder den Speicheradresse andern.
und dann den den L-Wert und den C-Wert im Eeprom speichern
Dafür soll dann bei Adresse 1 angefangen werden für L und bei Adresse 31 für C.

Aber irgendwie will das nicht wie ich das brauche. 1 Wert wird erfolgreich gespeichert und der 2 geht verloren.

PS: Ich suche schon die möglichkeit den (Delay) per millis zu ersetzten :wink: :wink:

vielen dank für eure zeit und ich hoffe mir kann jemand Helfen.
Lg Tobias

MessungPin4 = digitalRead(A0);
  if ((MessungPin4 == LOW) && (MessungPin4Alt == HIGH)) {
    if (digitalRead(A1) == LOW) {
      MLLC++;
      if (MLLC > 30) {
        MLLC = 1;
      }
      delay(40);
    } else {
      MLLC--;
      if (MLLC < 1) {
        MLLC = 30;
      }
      delay(40);
    }
    Serial1.print("t1.txt=");
    Serial1.write(0x22);
    Serial1.print(MLLC);
    Serial1.write(0x22);
    Serial1.write(NexT, 3);
  }

if (digitalRead(A2) == LOW) {                             //  EEprom
    if (save == false) {
      save = true;
    } else {
      save = false;
    }
    if (save == true) {
    EEPROM.get(MLLC +1, L);
    EEPROM.get(MLLC1 +1, C);
      Serial.print("L");
      Serial.print(L);
      Serial.print("F");

      Serial.print("C2");
      Serial.print(C);
      Serial.print("F");
    }
     delay(empfindlichkeit);
    }

Hallo und willkommen im Forum.

Dein Sketch ist absolut nicht zu lesen.

Setze deinen Sketch bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Dazu den Sketch markieren und die Schaltfläche klicken, oder [ code] davor und [ / code] dahinter ohne Leerzeichen.
Oder
im IDE-Fenster rechte Maustaste und für “Forum kopieren klicken”, danach hier einfügen.

Das kannst du in deinem Startbeitrag noch nachträglich machen.

Damit wird dieser für alle besser lesbar.

so, jetzt sollte alles lesbar sein.

Danke

do4kgt: so, jetzt sollte alles lesbar sein.

Naja... Lesbar schon, aber bis zur untestbarkeit verstümmelt.

Mein Tipp: Teile das Programm in Stücke, und teste sie einzeln. (ich kann leider nicht testen, da das Programm so verstümmelt ist)

dann probieren wir es mal mit der gesamten geschichte

void LLC() {

  if (Serial.available() > 0) {
    incomingByte = Serial.read();
    Serial.println(incomingByte);
  }
  if (Serial1.available() > 0) {
    Nex = Serial1.read();
    Serial.println(Nex);
  }
  MessungPin2 = digitalRead(A3);
  if ((MessungPin2 == LOW) && (MessungPin2Alt == HIGH)) {
    if (digitalRead(A4) == LOW) {
      L++;
      if (L > 255) {
        L = 0;
      }
      millis();
    } else {
      L--;
      if (L < 0) {
        L = 255;
      }
      millis();
    }
    // transmitter data packet
    Serial.print("L"); // code for servo
    Serial.print(L);   // servo angle data
    Serial.print("F"); // finish data packet
    Serial1.print("t3.txt=");
    Serial1.write(0x22);
    Serial1.print(L);
    Serial1.write(0x22);
    Serial1.write(NexT, 3);
  }
  MessungPin3 = digitalRead(A6);
  if ((MessungPin3 == LOW) && (MessungPin3Alt == HIGH)) {
    if (digitalRead(A7) == LOW) {
      C++;
      if (C > 255) {
        C = 0;
      }
      millis();
    } else {
      C--;
      if (C < 0) {
        C = 255;
      }
      millis();
    }
    // transmitter data packet
    Serial.print("C"); // code for servo
    Serial.print(C);   // servo angle data
    Serial.print("F"); // finish data packet
    Serial1.print("t5.txt=");
    Serial1.write(0x22);
    Serial1.print(C);
    Serial1.write(0x22);
    Serial1.write(NexT, 3);
  }
  Serial1.print("t50.txt=");
  Serial1.write(0x22);
  Serial1.print(MLLC);
  Serial1.write(0x22);
  Serial1.write(NexT, 3);

  if (digitalRead(A8) == LOW) {
    if (C215 == false) {
      C215 = true;
    } else {
      C215 = false;
    }
    if (C215 == true) {
      Serial1.print("bt1.bco=\"");
      Serial1.write(0x22);
      Serial1.write(NexT, 3);
      Serial1.print("bt1.val=1");
      Serial1.write(NexT, 3);
    }
    if (C215 == false) {
      Serial1.print("bt1.bco=\"");
      Serial1.write(0x22);
      Serial1.write(NexT, 3);
      Serial1.print("bt1.val=0");
      Serial1.write(NexT, 3);
    }
    millis() - empfindlichkeit;
  }
  MessungPin4 = digitalRead(A0);
  if ((MessungPin4 == LOW) && (MessungPin4Alt == HIGH)) {
    if (digitalRead(A1) == LOW) {
      MLLC++;
      if (MLLC > 30) {
        MLLC = 1;
      }
      millis();
    } else {
      MLLC--;
      if (MLLC < 1) {
        MLLC = 30;
      }
      millis();
    }
    Serial1.print("t1.txt=");
    Serial1.write(0x22);
    Serial1.print(MLLC);
    Serial1.write(0x22);
    Serial1.write(NexT, 3);
  }
  if (digitalRead(A2) == LOW) { //  EEprom
    if (save == false) {
      save = true;
    } else {
      save = false;
    }
    if (save == true) {
      EEPROM.write(MLLC + 1, L);
      EEPROM.write(MLLC + 1, C);
      Serial.println("Save");
    }
    delay(empfindlichkeit);
  }
  if (digitalRead(A5) == LOW) {
    if (sprung == false) {
      sprung = true;
    } else {
      sprung = false;
    }
    if (sprung == true) {
      Serial.print("L");
      Serial.print(L1);
      Serial.print("F");

      Serial.print("C1");
      Serial.print(C1);
      Serial.print("F");

      Serial.print("C2");
      Serial.print(E);
      Serial.print("F");

      Serial.println("CLL");

      Serial1.print("page 2");
      Serial1.write(0xff);
      Serial1.write(0xff);
      Serial1.write(0xff);

      Serial1.print("t1.txt=");
      Serial1.write(0x22);
      Serial1.print(C1);
      Serial1.write(0x22);
      Serial1.write(NexT, 3);

      Serial1.print("t3.txt=");
      Serial1.write(0x22);
      Serial1.print(L1);
      Serial1.write(0x22);
      Serial1.write(NexT, 3);
      CLL();
    }
    delay(empfindlichkeit);
  }
  if (Serial1.read() == '\x01\x00\x00\x00') {
    LOCKLLC();
  }
  if (Serial1.read() == '\x06\x06') {
    digitalWrite(42, LOW);
  }
  if (Serial.read() == '5') {
    Serial1.print("page 5");
    Serial1.write(0xff);
    Serial1.write(0xff);
    Serial1.write(0xff);
    SWRLLC();
  }
  LLC();
}

(deleted)

Jetzt zu meinem Problem, ich will mit dem Rotary Encoder den Speicheradresse andern.
und dann den den L-Wert und den C-Wert im Eeprom speichern
Dafür soll dann bei Adresse 1 angefangen werden für L und bei Adresse 31 für C.

Aber irgendwie will das nicht wie ich das brauche. 1 Wert wird erfolgreich gespeichert und der 2 geht verloren.

Mit deinen Angaben können wir uns denken was dein Problem ist, aber dieses rumgerate macht echt keinen Spaß.

Beschreibe exakt:
Welcher Wert wird gespeichert?
Welcher Wert geht “verloren”?
Was heißt verloren? Ist der Wert 0, oder falsch, bring ein exaktes Beispiel.

Poste Code der auch kompiliert.
Du kannst (du sollst) einen kurzen Testsketch schreiben der das Problem für uns nachvollziehbar macht. Jedenfalls das ohne irgendwelche besondere Libraries auskommt.
Etwas dass die Helfer in ihrer IDE kopieren können und ausprobieren können.

Erstens: Weiterhin ist der Code nicht komplett, und untestbar. Ich glaube, du möchtest gar nicht, dass man dir hilft. Aber ich versuchs trotzdem mal....

Zweitens: Da tauchen einfach mitten im Code millis(); auf. Völlig unmotiviert. Völlig wirkungslos.

Drittens: Die EEPROM Methoden verwendet man symmetrisch. Der Partner von write ist read, und der von get ist put.

Viertens:

EEPROM.write(MLLC + 1, L);
EEPROM.write(MLLC + 1, C);

Erst wird L gespeichert und dann schnurstracks mit C überschrieben. Das MUSS ein Irrtum sein.

noiasca: Spielverderber. ^^

Ähm....

Welches Spiel? Nach welchen Regeln?