跳到主要内容

Arduino EEPROM 使用

介绍

EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种非易失性存储器,即使在断电后也能保留数据。Arduino 的微控制器(如 ATmega328P)内置了 EEPROM,可以用来存储需要在断电后保留的数据。与 RAM 不同,EEPROM 的数据不会因断电而丢失,因此非常适合存储配置参数、用户设置或其他需要长期保存的信息。

在本教程中,我们将学习如何使用 Arduino 的 EEPROM 库来读写数据,并通过实际案例展示其应用。

EEPROM 的基本操作

Arduino 提供了 EEPROM 库,使得读写 EEPROM 变得非常简单。以下是 EEPROM 的基本操作:

  1. 写入数据:将数据写入 EEPROM 的指定地址。
  2. 读取数据:从 EEPROM 的指定地址读取数据。

写入数据

使用 EEPROM.write() 函数可以将一个字节的数据写入 EEPROM 的指定地址。以下是一个简单的示例:

cpp
#include <EEPROM.h>

void setup() {
// 将数据写入 EEPROM 地址 0
EEPROM.write(0, 123); // 将值 123 写入地址 0
}

void loop() {
// 无操作
}

在这个示例中,我们将值 123 写入 EEPROM 的地址 0

读取数据

使用 EEPROM.read() 函数可以从 EEPROM 的指定地址读取一个字节的数据。以下是一个读取数据的示例:

cpp
#include <EEPROM.h>

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

// 从 EEPROM 地址 0 读取数据
int value = EEPROM.read(0);
Serial.print("读取的值: ");
Serial.println(value);
}

void loop() {
// 无操作
}

在这个示例中,我们从 EEPROM 的地址 0 读取数据,并将其打印到串口监视器。

备注

EEPROM 的每个地址只能存储一个字节(0-255)的数据。如果需要存储更大的数据(如整数或浮点数),可以使用 EEPROM.put()EEPROM.get() 函数。

存储和读取更大的数据

使用 EEPROM.put()EEPROM.get()

EEPROM.put()EEPROM.get() 函数允许你存储和读取更大的数据类型,如整数、浮点数或结构体。

以下是一个存储和读取整数的示例:

cpp
#include <EEPROM.h>

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

// 存储一个整数
int valueToStore = 12345;
EEPROM.put(0, valueToStore);

// 读取存储的整数
int retrievedValue;
EEPROM.get(0, retrievedValue);
Serial.print("读取的整数: ");
Serial.println(retrievedValue);
}

void loop() {
// 无操作
}

在这个示例中,我们将整数 12345 存储在 EEPROM 的地址 0,然后读取并打印该值。

EEPROM 的实际应用场景

存储用户设置

假设你正在开发一个需要保存用户设置的设备,例如 LED 的亮度或温度阈值。你可以将这些设置存储在 EEPROM 中,以便在设备重启后恢复这些设置。

以下是一个存储和读取 LED 亮度的示例:

cpp
#include <EEPROM.h>

int brightness = 0;

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

// 从 EEPROM 读取亮度值
EEPROM.get(0, brightness);
Serial.print("读取的亮度值: ");
Serial.println(brightness);

// 模拟用户更改亮度
brightness = 200;
Serial.print("新的亮度值: ");
Serial.println(brightness);

// 将新的亮度值存储到 EEPROM
EEPROM.put(0, brightness);
}

void loop() {
// 无操作
}

在这个示例中,我们从 EEPROM 读取亮度值,并在用户更改亮度后将其存储回 EEPROM。

警告

EEPROM 的写入次数有限(通常为 100,000 次),因此应避免频繁写入数据。

总结

EEPROM 是 Arduino 中非常有用的存储工具,适合存储需要在断电后保留的数据。通过 EEPROM 库,我们可以轻松地读写数据,并存储更大的数据类型。在实际应用中,EEPROM 可以用于存储用户设置、配置参数等。

附加资源与练习

  • 练习 1:尝试使用 EEPROM 存储一个浮点数,并在重启后读取该值。
  • 练习 2:设计一个简单的项目,使用 EEPROM 存储用户输入的字符串,并在重启后显示该字符串。
提示

了解更多关于 EEPROM 的详细信息,可以参考 Arduino 官方文档