Eine Integer Zahl in das Arduino EEPROM schreiben und wieder lesen

Eine Integer Zahl soll im Arduino EEPROM abgelegt und wieder ausgelesen werden.

Der EEPROM.write Befehl schreibt jeweils ein Byte an die Adresse.
Integer sind aber 2 Byte, sodass die Zahl zerlegt wird und beide Teile einzeln an zwei aufeinander folgende Adressen geschrieben werden.

void eepromWriteInt(int adr, int wert) {
byte low, high;
  low=wert&0xFF;
  high=(wert>>8)&0xFF;
  EEPROM.write(adr, low); // dauert 3,3ms 
  EEPROM.write(adr+1, high);
  return;
} //eepromWriteInt

Danach werden beide Bytes gelesen und wieder zu der Integer Zahl zusammen gefügt.

int eepromReadInt(int adr) {
byte low, high;
  low=EEPROM.read(adr);
  high=EEPROM.read(adr+1);
  return low + ((high << 8)&0xFF00);
} //eepromReadInt

Hier das fertige Programm

// Integer in das EEPROM schreiben und auslesen
//
// Matthias Busse 22.5.2014 Version 1.0

#include < EEPROM.h>

int adresse=103;
int k=-29101;

void setup() {
  Serial.begin(38400); // start serial
  Serial.println("Int in EEPROM schreiben");
}  
  
void loop() {
  k += 1;
  eepromWriteInt(adresse,k);
  Serial.println(eepromReadInt(adresse)); 
  delay(3000);
}

void eepromWriteInt(int adr, int wert) {
// 2 Byte Integer Zahl im EEPROM ablegen an der Adresse
// Eingabe: 
//   adr: Adresse +0 und +1 wird geschrieben
//   wert: möglicher Wertebereich -32,768 bis 32,767
// Ausgabe: 
//   -
// 2 Byte Platz werden belegt.
//
// Matthias Busse 5.2014 V 1.0

byte low, high;

  low=wert&0xFF;
  high=(wert>>8)&0xFF;
  EEPROM.write(adr, low); // dauert 3,3ms 
  EEPROM.write(adr+1, high);
  return;
} //eepromWriteInt

int eepromReadInt(int adr) {
// 2 Byte Integer Zahl aus dem EEPROM lesen an der Adresse
// Eingabe: 
//   adr: Adresse +0 und +1 wird gelesen
// Ausgabe: int Wert
//
// Matthias Busse 5.2014 V 1.0

byte low, high;

  low=EEPROM.read(adr);
  high=EEPROM.read(adr+1);
  return low + ((high << 8)&0xFF00);
} //eepromReadInt

> Eine long int Zahl im Arduino EEPROM ablegen und auslesen

von Matthias Busse

6 Gedanken zu „Eine Integer Zahl in das Arduino EEPROM schreiben und wieder lesen

  1. Pingback: 3 Tasten: Einen Wert einstellen und im EEPROM ablegen | Shelvin – Elektronik ausprobiert und erläutert

  2. Manfred

    Vielen Dank!

    Ich habe die beiden Routinen „eepromWriteInt“ und „eepromReadInt“ gerade auf mein Testboard gepackt, das ist fertige Arbeit für mein echtes Projekt.

    Die Adressierung ist mir nicht ganz klar: Kann ich mich drauf verlassen, dass die Arduino-IDE die absoluten Adressen des EEProms selbst kennt, ich also nur 0 / 2 / 3 übergeben muß, um drei Werte abzulegen?

    Antworten
  3. Lemar

    Hallo,

    ich habe die Befehle EEPROM.put und EEPROM.get gefunden, die jede Art von Variabeln speichern können. Wo ist der Vorteil zu diesen Routinen?

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.