Den Arduino Eeprom Speicherbaustein nutzen

In diesem Kapitel beschäftigen wir uns mit dem EEPROM-Speicherbaustein: wie wir ihn verwenden und welche Vor- und Nachteile bei seiner Verwendung zu beachten sind. Und warum er nicht flüchtig ist.

Allgemeines zum EEPROM

In diesem Kapitel wirst du eine der Grundlagen lernen: den EEPROM als Ersatz für den (flüchtigen, also den nicht permanent speichernden) Arbeitsspeicher zu nutzen.

Sicher hast du dich nun schon einige Male geärgert, wenn die Inhalte einer Variablen nach dem Restart deines Arduinos verschwanden. Dies lässt sich umgehen, indem du den EEPROM nutzt. Der EEPROM ist ein weiterer Speicher in deinem Arduino (dieser ist fest in den Mikrocontroller integriert), der Werte auch ohne Strom speichern kann.

Leider hat er wie die meisten Dinge auch Nachteile: Er lässt sich nicht unbegrenzt neu beschreiben. Das heißt, dass du ihn zwar ohne Grenzen lesen, aber nur ca. 100.000 Mal beschreiben kannst. Dies klingt erst mal viel, ist in der Praxis allerdings wenig. Wenn du zum Beispiel jede Sekunde einen Wert, sagen wir mal aus einem Temperatursensor, speicherst, hast du nach 24 Stunden ca. rund 86.000 Werte im EEPROM geschrieben. Dem gegenüber stehen bei je einem Messwert pro Minute (nach 24 Stunden) 1440 einzelne Ergebnisse, die zu speichern sind. Da der Arduino 1024 EEPROM-Speicherzellen besitzt, dürfte dies gut gehen.

Um den EEPROM zu verwenden, müssen wir die Library EEPROM.h (diese wird standardmäßig mit der IDE installiert) vorher einbinden. Danach sieht das erste Programm zum Beispiel so aus:

Bis auf die EEPROM.read()-Funktion enthält der Sketch nicht viel Neues. Der Code lässt sich leicht selbst erschließen. Die If-Abfrage soll hier lediglich verhindern, dass der Arduino eine Speicherzelle ausliest, die es nicht gibt. Wenn also die Speicherzelle Nummer 512 ausgelesen wurde, geht es von vorne los. Wenn du einen Arduino Uno dein Eigen nennst, kannst du die Zahl 512 durch 1024 ersetzen.

In dem Serial. Read()-Aufruf, in dem der Inhalt (Variable value) ausgegeben wird, findest du den neuen Parameter DEC. DEC steht für Dezimal (engl. decimal) und bedeutet, dass der Wert im Dezimalzahlensystem ausgegeben wird, also unserem Standard. Du könntest auch HEX für das Hexadezimalsystem schreiben. Daneben gibt es auch weitere Zahlensysteme, die für uns jetzt unwichtig sind (zum Beispiel Oktal, Binär, etc.). Wenn du deinen Arduino noch nicht mit einem solchen Sketch programmiert hast, sollte überall der Wert 255 stehen.

Was könnte man mit dem EEPROM programmieren?

Jetzt fragst du dich, was man an Daten speichern könnte? Wie wäre es mit Daten aus dem Temperaturleser? Wir könnten unseren Datalogger mit dem Ethernet-Shield neu erfinden, ohne ein Shield zu verwenden? Es fällt dir vielleicht schwer, einen spaßigen Einsatzzweck zu finden (gängige Einsatzzwecke wären beispielsweise das permanente Speichern von Einstellungen wie der LCD-Helligkeit).


Dieser Artikel ist ein Auszug aus dem Buch „Arduino für Kids“ von Erik Schernich. Alle Infos zum Buch, das Inhaltsverzeichnis und eine kostenlose Leseprobe findet ihr bei uns im Shop.

Kommentar verfassen