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

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

{{#setlogo:ArduinoCommunityLogo.png}}

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.

Функция 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()

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