Найти в Дзене
IOT ENTERPRISE ©

Отчистка EEPROM в ARDUINO

/*
* Очистка EEPROM
*
* Устанавливает все байты памяти EEPROM в значение 0.
* Для более детального изучения обхода EEPROM см. пример eeprom_iteration.
*
* Этот пример кода находится в общественном достоянии.
*/
#include <EEPROM.h> // Подключаем библиотеку EEPROM, необходимую для работы с энергонезависимой памятью Arduino
void setup() {
// Настраиваем пин 13 как выход (для светодиода)
pinMode(13, OUTPUT);
/*
Проходим по каждому байту памяти EEPROM.
Разные AVR‑процессоры имеют разный объём EEPROM, например:
- Arduino Duemilanove: 512 Б;
- Arduino Uno: 1024 Б (1 КБ);
- Arduino Mega: 4096 Б (4 КБ).
Вместо жёсткого задания размера используем встроенную функцию length(),
чтобы код работал на всех AVR‑процессорах.
*/
for (int i = 0; i < EEPROM.length(); i++) { // Запускаем цикл: от 0 до конца памяти EEPROM
EEPROM.write(i, 0); // Записываем в ячейку с адресом i значение 0
}
// Включаем светодиод на пине 13, когда очистка заверш

/*
* Очистка EEPROM
*
* Устанавливает все байты памяти EEPROM в значение 0.
* Для более детального изучения обхода EEPROM см. пример eeprom_iteration.
*
* Этот пример кода находится в общественном достоянии.
*/

#include <EEPROM.h> // Подключаем библиотеку EEPROM, необходимую для работы с энергонезависимой памятью Arduino

void setup() {
// Настраиваем пин 13 как выход (для светодиода)
pinMode(13, OUTPUT);

/*
Проходим по каждому байту памяти EEPROM.

Разные AVR‑процессоры имеют разный объём EEPROM, например:
- Arduino Duemilanove: 512 Б;
- Arduino Uno: 1024 Б (1 КБ);
- Arduino Mega: 4096 Б (4 КБ).


Вместо жёсткого задания размера используем встроенную функцию length(),
чтобы код работал на всех AVR‑процессорах.
*/

for (int i = 0; i < EEPROM.length(); i++) { // Запускаем цикл: от 0 до конца памяти EEPROM
EEPROM.write(i, 0); // Записываем в ячейку с адресом i значение 0
}

// Включаем светодиод на пине 13, когда очистка завершена
digitalWrite(13, HIGH);
}

void loop() {
/* Пустой цикл.
* После выполнения setup() программа ничего не делает — ждёт дальнейших команд.
*/
}

Пояснение к каждой части кода

  1. /* ... */ — многострочный комментарий. Объясняет, что делает программа: очищает EEPROM, устанавливает все байты в 0. Также содержит справочную информацию о разнице в объёме EEPROM у разных плат Arduino и указывает, что код находится в общественном достоянии.
  2. #include <EEPROM.h> — подключает стандартную библиотеку Arduino для работы с памятью EEPROM. Без этой строки функции вроде EEPROM.write() и EEPROM.length() будут недоступны.
  3. void setup() — функция, которая выполняется один раз при включении/перезагрузке Arduino.
    pinMode(13, OUTPUT) — настраивает цифровой пин 13 как выходной (обычно к нему подключён встроенный светодиод на плате).
    for (int i = 0; i < EEPROM.length(); i++) — цикл, который перебирает все адреса памяти EEPROM. Функция EEPROM.length() возвращает размер памяти в байтах (автоматически подбирает значение для конкретной платы).
    EEPROM.write(i, 0) — записывает значение 0 в ячейку с текущим адресом i.
    digitalWrite(13, HIGH) — включает светодиод на пине 13, сигнализируя, что очистка завершена.
  4. void loop() — функция, выполняющаяся непрерывно после setup(). В данном случае она пуста: после очистки EEPROM программа ничего не делает. Это нормально для одноразовой операции.