Ich versuche für ein Projekt zu programmieren, dass Daten/Variablen auch beim neustart erhalten bleiben. Ich möchte hierfür den Eeprom von meinen RTC DS3231 Modul benutzen. Hierfür habe ich auch bereits ein Versuchsprogramm geschrieben, bekomme jedoch völlig unsinnige Ausgaben.
#include "Arduino.h"
#include "Wire.h"
#include "uEEPROMLib.h"
int ad[7][3]={
{1,1,1},
{0,23,59},
{1,0,0},
{1,4,23},
{0,0,0},
{1,17,17},
{0,6,9},
};
int tmp;
// uEEPROMLib eeprom;
uEEPROMLib eeprom(0x57);
class Speicher
{
public:
Speicher(int addr, int tmpint){}
void writeint(int addr, int tmpint)
{
if(eeprom.eeprom_read(addr) != tmpint)
{
eeprom.eeprom_write(addr, tmpint);
}
}
int readint(int addr)
{
eeprom.eeprom_read(addr, &tmp);
return tmp;
}
};
Speicher Speicher(0, 0);
unsigned int pos;
void setup() {
delay (2000);
Serial.begin(9600);
Serial.println("Serial OK");
delay(2500);
Serial.println("Delay OK");
Wire.begin();
for(int i=0; i<8; i++)
{
for(int j=0; j<3; j++)
{
Serial.print(ad[i][j]);
Serial.print(", ");
}
Serial.println();
}
pos=1;
for(int i=0; i<8; i++)
{
for(int j=0; j<3; j++)
{
Speicher.writeint(pos, ad[i][j]);
pos++;
}
}
pos=1;
for(int i=0; i<8; i++)
{
for(int j=0; j<3; j++)
{
ad[i][j]=Speicher.readint(pos);
pos++;
}
}
for(int i=0; i<8; i++)
{
for(int j=0; j<3; j++)
{
Serial.print(ad[i][j]);
Serial.print(", ");
}
Serial.println();
}
pos = 0;
}
void loop() {
}
Ausgabe:
Serial OK
Delay OK
1, 1, 1,
0, 23, 59,
1, 0, 0,
1, 4, 23,
0, 0, 0,
1, 17, 17,
0, 6, 9,
0, 0, 738,
257, 257, 1,
5888, 15127, 315,
1, 0, 256,
1025, 5892, 23,
0, 0, 256,
4353, 4369, 17,
1536, 2310, 9,
0, -7680, 738,
Vielen Dank im Vorhinein für die Unterstützung!