in EEPROM Float-Variable abspeichern

Hallo,

ich habe bereits alles Mögliche versucht bekomme es aber nicht hin einen float Wert in den eeprom zu schreiben. Hat jemand einen Tipp für mich wie ich dies anstelle?

Gruß Lazybone

Also man kann ganze Strukturen ins EEPROM schreiben, das geht dann auch mit floats.

Definition:

	struct StoreStruct {
		float fliesskommazahl;
	} storage = {
		1.0; // Initialwert
	}

Speichern:

	for (unsigned int t=0; t<sizeof(storage); t++)
		EEPROM.write(CONFIG_START + t, *((char*)&storage + t));

Auslesen:

...
	for (unsigned int t=0; t<sizeof(storage); t++)
		*((char*)&storage + t) = EEPROM.read(CONFIG_START + t);

Zugriff dann per

	storage.fliesskommazahl = 7.3;

etc…

Obs einen einfacheren Weg für floats gibt weiß ich nicht, ich hatte es bisher nur mit bytes, ints und longs zu tun und die kann man ganz einfach per EEPROM.write() speichern.

Das Eeprom kann ja nur Bytes aufnehmen, also muss man sich zur Aufnahme von Floats ein paar Gedanken machen. Beim Atmega328 (Duemilanove und Uno) haben wir 1024 "Speicherplätze" zur Verfügung. Bei einer Fließkommazahl kann man jetzt jede Stelle dieser Zahl separat abspeichern, im Prinzip genau das, was Joghurt vorschlug. Saubere Lösung!