Wenn der Arduino nach dem ausschalten den Zustand eines Digitalen Eingang, eine Variable oder andere Daten speichern soll, dann müssen diese Daten in im EEPROM gespeichert werden. Aber auch verschiedene statische Daten, die man immer wieder für das Programm braucht können hier relativ einfach abgelegt werden.
Ardublock hat Blöcke um mit diesen EEPROMs "electrically erasable programmable read-only memory" zu arbeiten. Es gibt einen Leseblock aber auch eine Schreibblock mit dem die EEPROMs beschrieben werden können. Deshalb können mit Ardublock auch nach dem ausschalten und auch trenne von der Spannungsversorgung eigene Daten dauerhaft gespeichert werden.
Allerdings muss beachtet werden, dass man EEPROMs nicht beliebig oft beschreiben kann. Verschiedede Hersteller gebe die "Schreibzyklen" mit 10.000 bis 1.000.000 an. Das liegt an der Art einen EEPROM zu beschreiben. Der EEPROM Speicher sollte also je nach Anwendung mit bedacht eingesetzte werden. Das lesen des EEPROMS dagen kann beliebig geschehen.
Das EEPROM schreiben im Arduino
Bevor man Daten aus dem EEPROM lesen kann muss man diese zuerst einmal in den EEPROM schreiben. Dafür gibt es den "write numer to EEPROM" Block. Damit unterschiedliche Daten gespeicht werden können, können mehrer Adressen als Speicherplatz in den "Adressen" Block eingetragen werden. In den "Daten" Block kann nun die Zahl die gespeichert werden soll eingetragen werden. Bei jedem "Programmablauf" werden nun die Daten im EEPROM gespeichert. Da sie auch nach dem abschalten gespeichert werden, sagt man auch dass die Daten in den EEPROM "geschrieben" werden.
Alle Zuordnungen und Umrechnungen von Zahlen, die normalerweise für das "schreiben" in einem EEPROM nötig sind, übernimmt Ardublock selbstständig.
Das EEPROM lesen im Arduino
Die gespeicherten Daten lassen sich mit dem "read numer from EEPROM" Block auslesen. Um mit diesen Daten arbeiten zu können, müssen sie in einer Variablen gespeichert werden. Dazu den Lesen Block an eine Variable einfügen und die Adresse auswählen, in der die Daten gespeichert sind. Bei jedem "Programmablauf" werden nun die Daten aus dem EEPROM gelesen und in der Variablen gespeichert.
Alle Zuordnungen und Umrechnungen von Zahlen, die normalerweise für das "lesen" in einem EEPROM nötig sind, übernimmt Ardublock selbstständig.
EEPROM schreiben und lesen Beispiel
Am Zähler Bespiel werden die Möglichkeiten durch den EEPROM Block erst deutlich.
Jedesmal wenn der Arduino gestartet wird, soll er anfangen eine Variable "hochzuzählen". Nach dem ausschalten und wieder einschalten, soll der Arduino an der Stelle weiterzählen wo er aufgehört hat. Das Ergebnis wird im Serial Print dann angezeigt. Im Variablen-Block wird wird die Variable bei jedem Durchgang um eine Zahl Hochgezählt.
Programmablauf
- Integer +1 = 1, beim nächtensten Durchgang integer +1 =2 usw.
- Das Ergebnis wird dann im Serial Monitor angezeigt 1,2,3,4,5,6,7,8 usw.
- Die Zahl die in der Variablen gespeichert ist, wird dann in den EEPROM "geschrieben".
- Damit das ganze auf dem Serial Monitor nicht zu schnell geht, wartet das Programm eine Sekunde
- Nun liest das Programm den EEPROM aus und speichert das Programm in der Variablen
Zur kontrolle wird die Vriable im Serial Monitor angezeigt
- 1 --> geschriebene zahl
- 1 --> gelesene Zahl
- 2 --> geschriebene zahl
- 2 --> gelesene Zahl
- 3 --> geschriebene zahl
- 3 --> gelesene Zahl
- Arduino ausschalten
- Arduino eingeschaltet fragt er zuerst den Wert ab, der im EEPROM gespeichert ist (3), der Wert wird dann in der Variablen gespeichert und wird dann im Serial Monitor angezeigt.
- Das Programm verwendet den gespeicherten Wert und zählt alle zwei Sekunden den Wert um "eins" hoch.
- 4 --> geschriebene zahl
- 4 --> gelesene Zahl
- 5 --> geschriebene zahl
- 5 --> gelesene Zahl
- usw.
Mit den gespeicherten Daten aus dem EEPROM "arbeiten"
Daten in den EEPROM zu schreiben und dann wieder auszulesen ist also gar nicht so schwer. Um den Zustand einer LED zu speichern bracht es dann etwas mehr, da nur Zahlen gespeichert werden können.
Die Zahlen im EEPROM müssen über Variable dann auf digitale Ausgänge angewendet werden. In diesem Beispspiel soll der Zustand von zwei LEDs gespeichert werden.
Im "SETUP" Teil werden die zuvor gespeicherten Daten ausgelesen. Über den "falls" Block werden nun die passenden LEDs ein bzw. ausgeschaltet. Ist eine "eins" im speicher, ist die Bedingung erfüllt und die LED eins wird üner " setze digitalen pin auf" HIGH, eingeschaltet. Sollte eine "zwei" im Speicher sein, wird die andere LED angeschaltet.
Im "LOOP" Teil werden die beiden Taster abgefragt und schalten auf die gleiche Weiße die beiden LEDs, nur dass bei jedem Tasterdruck auch die passende Zahl "eins oder zwei" in den EEPROM geschrieben wird.
Hier das ganze Programm noch ein einem Bild, zur besseren Übersicht.