1.简介
EEPROM用于储存一些掉电不丢失的数据。例如WiFi的用户名和用户密码。
- 一个EEPROM空间占一个字节,只能存储0-255,就是一个byte值的范围。
- EEPROM可操作的地址为0~4095。
保存一个byte类型
#include <EEPROM.h> //加载EEPROM的库
byte data=220; //byte类型数值
void setup() {
Serial.begin(115200);
Serial.println("");
//开启EEPROM,开辟512个位空间
EEPROM.begin(512);
//第0位,写入data的值
EEPROM.write(0,data);
//提交
EEPROM.commit();
//读取第0位的值
data=EEPROM.read(0);
Serial.print("data的值:");
Serial.println(data+1);
}
void loop() {
}
保存一个String类型
#include <EEPROM.h>
void setup()
{
EEPROM.begin(512);
Serial.begin(115200);
}
void loop()
{
ListenSerial();
}
void ListenSerial()
{
String data = "";
while (Serial.available())
{s
data += char(Serial.read());
delay(2);
}
if (data.length() != 0)
{
if (data.indexOf("SSID:") >= 0)
{
EEPROM_write(data);
Serial.print("写入成功!");
Serial.println();
Serial.print("str:" + data);
Serial.println();
}
if (data.indexOf("Read") >= 0)
{
Serial.print("读取成功!" + EEPROM_read());
Serial.println();
}
}
}
//从0位开始保存,str为要保存的字符串
void EEPROM_write(String str)
{
//把str所有数据逐个保存在EEPROM
for (int i = 0; i < str.length(); i++)
{
EEPROM.write(i, str[i]);
}
EEPROM.commit();
}
//从0位开始读取所有字符串
String EEPROM_read()
{
String data = "";
//从EEPROM中逐个取出每一位的值,并链接
for (int i = 0; i < 512; i++)
{
data += char(EEPROM.read(i));
}
return data;
}