Pages: [1]   Go Down
Author Topic: Store floats in EEPROM  (Read 1079 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello Everyone,

I'm working on a prototype system that involves a bunch of time settings (eight to be exact) and I'd like to be able to store these settings as presets in EEPROM.

The time settings are relatively precise and can range from 0.01-2.00 seconds, which require me to declare the time variables as floats. I want to be able to save a full set of time settings (all eight time settings) in EEPROM to be accessed later, but I'm having trouble doing so. I've tried to multiply the floats by 100 and convert them to ints to be saved, but no luck.

Just to provide some more details about the system, I'll elaborate. I want to have five presets and EACH preset will have eight time settings. The time settings are just different variables of the total cycle. The system will perform different functions for a certain amount of time based on the time settings, but the total cycle will be an aggregate of the eight different times.

Example:

Preset 1:
STAGE 1: 0.30
STAGE 2: 0.60
STAGE 3:1.30
STAGE 4: 0.55
STAGE 5: 1.60
STAGE 6: 0.20
STAGE 7: 0.80
STAGE 8: 1.10

Preset 2:
STAGE 1: 1.30
STAGE 2: 1.60
STAGE 3: 0.42
STAGE 4: 0.05
STAGE 5: 1.10
STAGE 6: 1.20
STAGE 7: 0.10
STAGE 8: 0.50

I want to be able to store Preset 1 and Preset 2 in EEPROM, just to sum things up.

Any suggestions would be appreciated.

Thanks!
Logged

BCC AZ USA
Offline Offline
Edison Member
*
Karma: 34
Posts: 1150
It gets hot so it must be working
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Time from 0.01 to 2.00 could be represented by one byte if you multiply by 100 before saving and doing a divide on retrieval.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hmmm, I tried to do that but wasn't able to get it to work.

Do you have an example?

Logged

BCC AZ USA
Offline Offline
Edison Member
*
Karma: 34
Posts: 1150
It gets hot so it must be working
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I am new to C so not fluent at all.  I tried the code below using serial monitor and it seemed to work as far as change the data types.


Code:
float timeToSave = 1.22;
byte timeByte;
float retrievedTime;

timeByte = byte(timeToSave * 100);
// save byte to EEPROM

//retrieve timByte
retrievedTime = float(timeByte / 100.00);
Logged

Idaho, US
Offline Offline
God Member
*****
Karma: 19
Posts: 859
Special User
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

http://playground.arduino.cc/Code/EEPROMWriteAnything
Logged

Pages: [1]   Go Up
Jump to: