EEPROM память на платформе Arduino представляет собой энергонезависимое хранилище данных, которое позволяет сохранять важные настройки и информацию даже при выключении устройства или перезагрузке микроконтроллера. Этот вид памяти, известный как Electrically Erasable Programmable Read-Only Memory (EEPROM), предоставляет возможность долгосрочного хранения данных на Arduino. В данном уроке мы рассмотрим, как работать с EEPROM памятью на платформе Arduino, используя стандартную библиотеку EEPROM.h.
EEPROM Arduino обладает следующими ключевыми характеристиками:
На платформе Arduino для работы с EEPROM памятью используется библиотека EEPROM.h. Ниже представлены ключевые функции этой библиотеки:
EEPROM.read(address)
: Считывает байт данных из EEPROM по указанному адресу address
.EEPROM.write(address, value)
: Записывает байт данных value
в EEPROM по указанному адресу address
.EEPROM.update(address, value)
: Аналогично write
, но проверяет, изменилось ли значение. Если оно не изменилось, запись не выполняется, что позволяет уменьшить износ EEPROM.EEPROM.put(address, value)
: Записывает значение value
по адресу address
в EEPROM, поддерживая разные типы данных (int, float, struct и другие).EEPROM.get(address, value)
: Считывает значение данных из EEPROM, начиная с адреса address
, и сохраняет его в переменной value
. Поддерживает разные типы данных.EEPROM.length()
: Возвращает размер EEPROM в байтах.EEPROM.begin(size)
: Используется для указания размера EEPROM, если он не задан по умолчанию.В этом уроке мы рассмотрим примеры записи и чтения различных типов данных, включая boolean, char, byte, int, float и строки, с использованием библиотеки EEPROM.h на Arduino.
EEPROM Arduino обладает несколькими ключевыми характеристиками, среди которых энергонезависимость, долгий срок хранения данных и возможность записи и чтения данных разных типов. Мы создадим примеры записи и чтения различных типов данных, таких как boolean, char, byte, int, float и строки, и рассмотрим команды библиотеки EEPROM.h
, которые делают этот процесс простым и надежным.
Для более глубокого понимания работы с EEPROM памятью, мы пройдем через примеры записи и чтения данных, а также рассмотрим особенности работы с этими данными. Это поможет вам в использовании EEPROM для сохранения важных настроек и информации на вашей Arduino.
/* Сайт автора https://arduino-tex.ru/ Проекты на Arduino https://portal-pk.ru/page-17/proekty-na-arduino.html Проекты на ESP https://arduino-tex.ru/menu/10/11/proekty-na-esp8266-esp32.html Страница урока https://arduino-tex.ru/news/176/arduino-i-eeprom-energonezavisimoe-hranilishche.html */ #include <EEPROM.h> int address = 0; // Начальный адрес для записи данных в EEPROM void setup() { Serial.begin(9600); // Инициализация последовательной связи для вывода данных в монитор порта // Пример записи данных в EEPROM // Запись boolean boolean boolValue = true; EEPROM.write(address, boolValue); address += sizeof(bool); // Увеличение адреса на размер boolean (1 байт) // Запись char char charValue = 'A'; EEPROM.write(address, charValue); address += sizeof(char); // Увеличение адреса на размер char (1 байт) // Запись byte byte byteValue = 42; EEPROM.write(address, byteValue); address += sizeof(byte); // Увеличение адреса на размер byte (1 байт) // Запись int int intValue = 1234; EEPROM.put(address, intValue); address += sizeof(int); // Увеличение адреса на размер int (2 байта) // Запись float float floatValue = 3.14; EEPROM.put(address, floatValue); address += sizeof(float); // Увеличение адреса на размер float (4 байта) // Пример записи строки (char array) в EEPROM char str[] = "Hello, EEPROM!"; for (int i = 0; i < strlen(str); i++) { EEPROM.write(address, str[i]); address += sizeof(char); // Увеличение адреса на размер char (1 байт) для каждого символа } // Ожидание перед чтением delay(1000); // Пример чтения данных из EEPROM address = 0; // Сбрасываем адрес чтения на начальное значение // Чтение boolean EEPROM.read(address, boolValue); address += sizeof(bool); // Чтение char EEPROM.read(address, charValue); address += sizeof(char); // Чтение byte EEPROM.read(address, byteValue); address += sizeof(byte); // Чтение int EEPROM.get(address, intValue); address += sizeof(int); // Чтение float EEPROM.get(address, floatValue); address += sizeof(float); // Чтение строки (char array) char readStr[15]; for (int i = 0; i < strlen(str); i++) { EEPROM.read(address, readStr[i]); address += sizeof(char); } readStr[strlen(str)] = '\0'; // Вывод прочитанных значений в монитор порта Serial.println("Прочитанные значения из EEPROM:"); Serial.print("Boolean: "); Serial.println(boolValue); Serial.print("Char: "); Serial.println(charValue); Serial.print("Byte: "); Serial.println(byteValue); Serial.print("Int: "); Serial.println(intValue); Serial.print("Float: "); Serial.println(floatValue); Serial.print("String: "); Serial.println(readStr); } void loop() { // Ваш код здесь (для реализации другой функциональности, если необходимо) }
Что делает каждая часть кода:
Этот код демонстрирует, как записывать и читать различные типы данных в EEPROM, включая строки (char array). Вы можете использовать этот пример как отправную точку для работы с EEPROM на вашей плате Arduino.
EEPROM может хранить данные даже после отключения устройства. Если вам когда-либо понадобится очистить EEPROM и удалить все данные, вы можете использовать следующий код.
/* Сайт автора https://arduino-tex.ru/ Проекты на Arduino https://portal-pk.ru/page-17/proekty-na-arduino.html Проекты на ESP https://arduino-tex.ru/menu/10/11/proekty-na-esp8266-esp32.html Страница урока https://arduino-tex.ru/news/176/arduino-i-eeprom-energonezavisimoe-hranilishche.html */ #include <EEPROM.h> void setup() { Serial.begin(9600); // Если вы хотите очистить EEPROM, то запустите эту функцию один раз и закомментируйте её после выполнения. clearEEPROM(); } void loop() { // Здесь можно разместить вашу основную логику программы. } void clearEEPROM() { Serial.println("Очистка EEPROM..."); for (int i = 0; i < EEPROM.length(); i++) { EEPROM.write(i, 255); } Serial.println("EEPROM очищена."); delay(1000); }
Этот код выполняет очистку всей EEPROM, устанавливая каждый байт в ней в значение 255. Вызовите функцию clearEEPROM()
в setup()
один раз, чтобы очистить EEPROM при необходимости. После очистки вы можете закомментировать вызов clearEEPROM()
.
Предостережение: Очистка EEPROM уничтожает все данные, хранящиеся в EEPROM, поэтому будьте осторожны и убедитесь, что вам действительно нужно очистить EEPROM, прежде чем запускать этот код.
Заключение.
В этой статье мы рассмотрели основы работы с памятью EEPROM (Electrically Erasable Programmable Read-Only Memory) на платах Arduino. Мы изучили основные функции библиотеки EEPROM и создали пример программы, демонстрирующей запись и чтение данных разных типов, таких как boolean, char, byte, int, float и строки (с использованием массива символов), в EEPROM.
Кроме того, мы добавили в статью раздел об очистке памяти EEPROM, предостерегая вас о том, что этот процесс полностью уничтожает все данные, хранящиеся в EEPROM.
Знание работы с EEPROM позволяет сохранять и восстанавливать важные настройки и данные на вашей Arduino-плате, делая её более функциональной и адаптированной к вашим потребностям. Эта память полезна для хранения параметров, калибровочных данных, настроек и другой информации, которая должна сохраняться даже после перезапуска устройства.
Надеемся, что данная статья поможет вам легче освоить работу с EEPROM на Arduino и использовать её в ваших проектах. Помните о том, что EEPROM имеет ограниченное количество циклов записи/стирания, поэтому используйте её осторожно и рационально.
Фотографии к статье
Файлы для скачивания
![]() |
Очистка памяти EEPROM.ino | 1 Kb | 495 | Скачать |
![]() |
EEPROM Arduino: Пример кода для работы с boolean, char, ....ino | 3 Kb | 511 | Скачать |
Статьи про Arduino
15 сентября , 2023
Комментариев:0
Файлов для скачивания:2
Фото:3
Понравилась статья? Нажми
Виджеты для Easy HMI
Читайте также
Мы в соц сетях
Комментарии