Fipsi:
Äh... ja.. das sah im Tutorital jetzt ein wenig einfacher aus.
Das sieht nur so aufwändig aus, weil ich gleich einen ganzen Testsketch mitgeliefert habe.
Du hast in deinem Code ein Problem:
die Variable "scheibe_num" ist integer und damit 2 Bytes lang.
Der Befehl "EEPROM.write(scheibe_num,1);" funktioniert also nur, wenn scheibe_num < 256 ist.
Hab jetzt ehrlich gesagt keine Ahnung, was genau ich mit diesem Code machen soll, wie ich ihn an meinen anpass.
ganz einfach:
du hängst unten an deinen Sketch die Funktionsdeklarationen für "EEPRomSave()" und "EEPRomLoad()" dran.
Und schreibst du anstatt "scheibe_num = EEPROM.read(1);" einfach
EEPromLoad((byte*) &scheibe_num, 2, 1);
Und anstatt "EEPROM.write(scheibe_num,1);" einfach
EEPromSave((byte*) &scheibe_num, 2, 1);
Es funktioniert wie vorher, nur werden jetzt beide Bytes der Variablen scheibe_num geschrieben und gelesen. Also auch wenn scheibe_num den Wert 2000 hat, wird der Wert korrekt gespeichert und gelesen.
Das einzige, was du beachten mußt: du hast ja nun 2 Bytes im EEProm belegt. Wenn du noch eine Variable ablegen willst, dann muß die Adresse 2 byte höher sein, also z.B. "EEPromSave((byte*) &befehl_status, 2, 3); "
So in ungefähr soll es etwa ausschauen. Ob das jetzt so funktioniert, weiß ich auch nicht ganz, da ich auch auf n paar Bauteile warten muss, dass ich meine Platinen fertig löten und ausprobieren kann.
Nur 3 Sachen:
a) Wenn du im Serial-Monitor eine "1" eintipst, dann bekommst du eine "49" geliefert, den ASCII-Code für "1"
b) Beim 2. Serial.read() fragst du vorher nicht ab, ob ein Zeichen da ist.
c) lcd.clear() sollte man nur ausführen, wenn es sein muß. Wenn es ständig ausführt wird, dann flackert das Display fürchterlich.