Inhalt
Erklärung

EEPROM am Beispiel des Arduino UNO R3
Das EEPROM (Electrically Erasable Programmable Read-Only Memory) ist eine kleine „Festplatte“. Allerdings fasst sie nur 1024 Byte. Jeder Speicherplatz ist 1 Byte groß und kann deshalb nur eine 1 Byte große Variable oder einen Teil einer anderen Variablen aufnehmen.
Der Inhalt bleibt nach dem Ausschalten erhalten.
Funktionen der Bibliothek EEPROM
Schlüsselwort | Aktion |
---|---|
write(Speicherplatz, Wert) | beschreibt einen Speicherplatz nur für 1 Byte große Variable (byte, char) |
update(Speicherplatz, Wert) | aktualisiert den Wert eines Speicherplatzes Im Unterschied zu write() wird der Wert nur geschrieben, wenn er sich vom bisherigen Wert unterscheidet. nur für 1 Byte große Variable (byte, char) |
read(Speicherplatz, Wert) | liest den Wert an einem Speicherplatz nur für 1 Byte große Variable (byte, char) |
put(Speicherplatz, Wert) | schreibt den Wert ungeachtet der Größe der Variable anwendbar für alle Variablen |
get(Speicherplatz, Wert) | liest den Wert ungeachtet der Größe der Variable anwendbar für alle Variablen |
length() | zeigt die Größe des EEPROMs an |

Jeder Funktion muss EEPROM. vorangestellt werden.
Beispiele für die Speicherung verschiedener Variablen
byte
// eingebaute Bibliothek einbinden
# include "EEPROM.h"
byte Zufallszahl;
byte MaxWuerfeln = 5;
int Minumum = 1;
int Maximum = 7;
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
// Zufallsgenerator starten
randomSeed(analogRead(0));
// Zufallszahlen schreiben
for (int i = 0; i < MaxWuerfeln; i ++)
{
Zufallszahl = random(Minumum, Maximum);
EEPROM.write(i, Zufallszahl);
}
// Zufallszahlen lesen
for (int i = 0; i < MaxWuerfeln; i ++)
{
Serial.println(EEPROM[i]);
}
}
void loop()
{
// bleibt leer, Programm wird nur einmal ausgeführt
}
char-Array
# include "EEPROM.h"
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
char BeispielString1[] = "Programmieren mit ";
char BeispielString2[] = "Arduino ist toll!";
// Startadresse
int SpeicherAdresse = 0;
// ersten String schreiben
EEPROM.put(SpeicherAdresse, BeispielString1);
// Startadresse auf das Zeichen hinter das Ende des ersten Strings setzen
SpeicherAdresse = sizeof(BeispielString1) + 1;
// String schreiben
EEPROM.put(SpeicherAdresse, BeispielString2);
// ersten String lesen
for (int i = 0; i < sizeof(BeispielString1); i++)
{
Serial.print(char(EEPROM[i]));
}
// zweiten String lesen
for (int i = SpeicherAdresse; i < SpeicherAdresse + sizeof(BeispielString2); i++)
{
Serial.print(char(EEPROM[i]));
}
}
void loop()
{
// bleibt leer → das Programm soll nur einmal ausgeführt werden
}
int
# include "EEPROM.h"
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
int Zahl1 = 12;
int Zahl2 = 21;
// "Hilfsvariable", in die das Ergebnis des Speicherauslesens geschrieben wird
int Ergebnis;
// 1. Zahl schreiben
int Speicheradresse = 0;
EEPROM.put(Speicheradresse, Zahl1);
// 2. Zahl schreiben
// Speicheradresse um Länge der Variable int verschieben
Speicheradresse += sizeof(int);
EEPROM.put(Speicheradresse, Zahl2);
// Produkt berechnen und schreiben
// Speicheradresse um Länge der Variable int verschieben
Speicheradresse += sizeof(int);
EEPROM.put(Speicheradresse, Zahl1 * Zahl2);
// Speicheradresse auf Start setzen
Speicheradresse = 0;
// Daten in die "Hilfsvariable" Ergebnis einlesen und anzeigen
EEPROM.get(Speicheradresse, Ergebnis);
Serial.print(String(Ergebnis) + " * ");
// Speicheradresse um Länge der Variable int verschieben
Speicheradresse += sizeof(int);
// Daten in die "Hilfsvariable" Ergebnis einlesen und anzeigen
EEPROM.get(Speicheradresse, Ergebnis);
Serial.print(String(Ergebnis) + " = ");
Speicheradresse += sizeof(int);
EEPROM.get(Speicheradresse, Ergebnis);
Serial.print(Ergebnis);
}
void loop()
{
// bleibt leer → das Programm soll nur einmal ausgeführt werden
}
float
# include "EEPROM.h"
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
float Zahl1 = 12.56;
float Zahl2 = 21.23;
// "Hilfsvariable", in die das Ergebnis des Speicherauslesens geschrieben wird
float Ergebnis;
// formatierte Zahl , statt .
String ErgebnisFormat;
// 1. Zahl schreiben
int Speicheradresse = 0;
EEPROM.put(Speicheradresse, Zahl1);
// 2. Zahl schreiben
// Speicheradresse um Länge der Variable float verschieben
Speicheradresse += sizeof(float);
EEPROM.put(Speicheradresse, Zahl2);
// Quotient berechnen und schreiben
// Speicheradresse um Länge der Variable float verschieben
Speicheradresse += sizeof(float);
EEPROM.put(Speicheradresse, Zahl1 / Zahl2);
// Speicheradresse auf Start setzen
Speicheradresse = 0;
// Daten in die "Hilfsvariable" Ergebnis einlesen und anzeigen
EEPROM.get(Speicheradresse, Ergebnis);
// Zahl formatieren, , statt .
ErgebnisFormat = String(Ergebnis);
ErgebnisFormat.replace(".", ",");
Serial.print(ErgebnisFormat + " * ");
// Speicheradresse um Länge der Variable float verschieben
Speicheradresse += sizeof(float);
// Daten in die "Hilfsvariable" Ergebnis einlesen und anzeigen
EEPROM.get(Speicheradresse, Ergebnis);
ErgebnisFormat = String(Ergebnis);
ErgebnisFormat.replace(".", ",");
Serial.print(ErgebnisFormat + " = ");
Speicheradresse += sizeof(float);
EEPROM.get(Speicheradresse, Ergebnis);
ErgebnisFormat = String(Ergebnis);
ErgebnisFormat.replace(".", ",");
Serial.print(ErgebnisFormat);
}
void loop()
{
// bleibt leer → das Programm soll nur einmal ausgeführt werden
}



Letzte Aktualisierung: