Arduino中利用EEPROM存储double和float类型的数据(使用共用体)

shenhaiyu 于 2015-6-4 13:11 编辑



有的时候我们需要将float或者double类型的数据存到EEPROM中以备下次利用,比如制作电子称存储皮重等信息时。

但是Arduino的EEPROM仅仅能以8bit一位存储1024位。

在网上查了一下,貌似使用共用体的方法很火,于是写了个代码:



数据拆分存储部分:dvalue.v = 169600.00;
unsigned char dpointer;
dpointer = dvalue.dchar;
for(int i = 0; i < 8; i++) {
EEPROM.write(i,
dpointer);
dpointer++;
}复制代码数据读取部分:for(int i = 0; i < 8; i++) dvalue.dchar[i] = EEPROM.read(i);
Serial.println(dvalue.v);复制代码完整示例代码:#include <EEPROM.h>

union data {
double v;
unsigned char dchar[8];
} dvalue;

void setup() {
Serial.begin(9600);

//数据拆分
dvalue.v = 169600.00;
unsigned char dpointer;
dpointer = dvalue.dchar;
for(int i = 0; i < 8; i++) {
EEPROM.write(i,
dpointer);
dpointer++;
}
}

void loop()
{
//数据还原
for(int i = 0; i < 8; i++) dvalue.dchar[i] = EEPROM.read(i);
Serial.println(dvalue.v);
delay(1000);
}
复制代码当仅仅要存取float类型时,只需要把v前面的double改为float,把循环和声明dchar中的8改为4即可。













EEPROM库中貌似还有个put方法可以存各种数据类型,感谢18# 葱拌豆腐 提供

http://www.arduino.cc/en/Reference/EEPROM
via - 极客工坊

标签: Arduino教程