Микроконтроллер на платах Arduino и Genuino имеют постоянную EEPROM: память, значения которой сохраняются при выключении питания платы (по принципу жесткого диска).
Цель этого примера — показать метод EEPROM.put(), который записывает данные в EEPROM, используя также EEPROM.update (), который записывает данные только в том случае, если они отличаются от предыдущего содержимого, которое должно быть перезаписано. Эта функция работает по принципу EEPROM.update(). То есть, если записываемое значение идентично тому, что уже хранится в указанном участке EEPROM-памяти, то запись выполнена не будет.
Требуемое оборудование
Плата Arduino или Genuino
Требуемая схема
Нет схемы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
/*** Пример eeprom_put Это пример, демонстрирующий работу функции EEPROM.put(). Кроме того, этот скетч подготавливает EEPROM-данные для скетча-примера eeprom_get. Обратите внимание, что функция EEPROM.put() работает по тому же принципу, что и EEPROM.update(). То есть запись будет выполнена лишь в том случае, если новое значение отличается от предыдущего. Автор – Кристофер Эндрюс (Christopher Andrews), 2015 год. Выпущено под лицензией MIT. ***/ #include <EEPROM.h> struct MyObject { float field1; byte field2; char name[10]; }; void setup() { Serial.begin(9600); while (!Serial) { ; // ждем подключения последовательного порта (нужно только для моделей Arduino со штатным USB-портом) } float f = 123.456f; // переменная для записи в EEPROM-память int eeAddress = 0; // участок EEPROM-памяти, куда будут записаны данные // теперь одна простая функция, где первый аргумент – это адрес, а второй – объект: EEPROM.put(eeAddress, f); Serial.println("Written float data type!"); // "float-данные записаны!" /** функцию EEPROM.put() можно использовать и для пользовательских структур. **/ // данные, которые будут записаны: MyObject customVar = { 3.14f, 65, "Working!" }; // "Работает!" eeAddress += sizeof(float); // перемещаемся к участку EEPROM-памяти, находящемуся вслед за тем, где хранится переменная «f» EEPROM.put(eeAddress, customVar); Serial.print("Written custom data type! \n\nView the example sketch eeprom_get to see how you can retrieve the values!"); // "Данные пользовательского типа записаны! \n\nО том, как извлечь эти данные, смотрите в скетче-примере eeprom_get" } void loop() { /* пустой цикл */ } |
Смотрите также:
EEPROM Clear: очистить байты в EEPROM.
EEPROM Read: Чтение EEPROM и отправка его значений на компьютер.
EEPROM Write: Сохраняет значения с аналогового входа в EEPROM.
EEPROM Crc: Вычисляет CRC содержимого EEPROM, как если бы это был массив.
EEPROM Get: Считывание данных с EEPROM и их вывод на монитор порта в виде числа с плавающей точкой float.
EEPROM Iteration: Несколько разных способов пройти через пространство памяти EEPROM.
EEPROM Update: Запись в EEPROM данных, считанных с 0-ого аналогового контакта (A0). Запись осуществляется только в том случае, если новые данные отличаются от предыдущих – это позволяет увеличить срок службы EEPROM.