Arrays 如何将非基本对象数组写入Arduino EEPROM,然后在每次程序启动时将数组读入内存
我正在为电子产品的最后一年项目开发一个药丸提醒器。我需要存储药丸的名称、服用次数、服用时间以及当前是否有效。我创建了一个类pill,如下所示,并将这些pill存储在一个数组中:Arrays 如何将非基本对象数组写入Arduino EEPROM,然后在每次程序启动时将数组读入内存,arrays,arduino,eeprom,Arrays,Arduino,Eeprom,我正在为电子产品的最后一年项目开发一个药丸提醒器。我需要存储药丸的名称、服用次数、服用时间以及当前是否有效。我创建了一个类pill,如下所示,并将这些pill存储在一个数组中: class Pill{ public: String pillName = "Nothing"; boolean pillTaken = true; int hours[6]; boolean active = false; int
class Pill{
public:
String pillName = "Nothing";
boolean pillTaken = true;
int hours[6];
boolean active = false;
int count = 0;
};
Pill pills[6];
现在我想将这些数据保存在Arduino EEPROM中,如何将药丸数组写入EEPROM,并在每次程序启动时将数据读入内存。此外,每次收到修改pill的命令时,我都需要更新数组,并放入新值 EEPROM.put(地址、数据)
让我们在EEPROM中存储任何类型的数据。get(地址、数据)从EEPROM返回任何对象
#include <EEPROM.h>
[...]
class Pill{
public:
String pillName = "Nothing";
boolean pillTaken = true;
int hours[6];
boolean active = false;
int count = 0;
};
Pill pills[6];
//Assigning data to pills array in here...
[...]
EEPROM.put(address,pills)
[...]
//Getting saved pills array
Pill savedPills[]; //I'm not sure if you'd have to initialize the size...
EEPROM.get(address,savedPills)
#包括
[...]
类丸{
公众:
字符串pillName=“无”;
布尔值=真;
整小时[6];
布尔活动=假;
整数计数=0;
};
避孕药[6];
//正在将数据分配给此处的数组。。。
[...]
EEPROM.put(地址、地址)
[...]
//获取保存的药丸数组
避孕药[]//我不确定你是否需要初始化大小。。。
EEPROM.get(地址,保存的票据)
您可以在arduino.cc中查看完整的示例:
您需要使用cstring/char数组,这意味着字符串数据实际上存储在
Pill
类中。尽管您的答案看起来正确,但它对字符串不起作用。正确的信息。我是否可以将pillName
变量存储为字符数组,并将其读回String
,因为我需要使用字符串的功能?我的解决方案是创建一个不同的类,将名称存储为数组并保存到EEPROM,然后读取它并将信息复制到我的pills
类。您不能直接读取它,但是如果pillName
它是一个以null结尾的字符串,您可以执行以下操作:string myString=pillName
一旦从EEPROM加载了pillName
。我不得不添加一个\0
作为最后一个字符,它就工作了。我不确定这是否是正确的方法?是的,String类希望在其输入上有一个空终止符。它使用它来确定要复制的cstring的长度。@EdmoreMGoneseDigolodollarz另外,您可以看到这是字符串的默认值:sizeof(“test”)
将等于5,因为它会在结尾隐式添加空字符。不确定您是否收到了我对您在我的答案上发表的评论的回复。我没有@your name,所以这条消息应该会给你一个通知。