Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Библиотеки/EEPROM/put()

Материал из Онлайн справочника
Перейти к: навигация, поиск

{{#setlogo:ArduinoCommunityLogo.png}}

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.

Функция EEPROM.put()[1]

Записывает данные в EEPROM-память, но не напрямую, а через указание объекта (например, переменной), хранящего записываемое значение.

Синтаксис

EEPROM.put(address, data)

Параметры

address – участок EEPROM-памяти, куда будет выполнена запись. Значения начинаются с «0». Тип данных – int.
data – объект, значение которого нужно прочесть. Это может быть и примитивный тип данных (например, float), и пользовательский struct.

Что возвращает

Отсылку к объекту, где хранятся обработанные данные.

Примечание

Эта функция работает по принципу EEPROM.update(). То есть если записываемое значение идентично тому, что уже хранится в указанном участке EEPROM-памяти, то запись выполнена не будет.

Пример

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

См.также

  1. EEPROM.read()
  2. EEPROM.write()
  3. EEPROM.update()
  4. EEPROM.get()

Внешние ссылки

  1. Arduino - EEPROMPut