Arduino:Библиотеки/EEPROM/put(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
 
Нет описания правки
 
(не показано 5 промежуточных версий 2 участников)
Строка 1: Строка 1:
{{#setlogo:ArduinoCommunityLogo.png}}
{{Arduino панель перехода}}
{{Arduino панель перехода}}
{{Перевод от Сubewriter}}
{{Перевод от Сubewriter}}
Строка 7: Строка 6:
=Функция EEPROM.put()<ref>[https://www.arduino.cc/en/Reference/EEPROMPut Arduino - EEPROMPut]</ref>=
=Функция EEPROM.put()<ref>[https://www.arduino.cc/en/Reference/EEPROMPut Arduino - EEPROMPut]</ref>=


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


== Синтаксис ==
== Синтаксис ==
Строка 17: Строка 16:
== Параметры ==
== Параметры ==


<syntaxhighlight lang="c" enclose="div">
<syntaxhighlight lang="c">
address – участок EEPROM-памяти, куда будет выполнена запись. Значения начинаются с «0». Тип данных – int.
address – участок EEPROM-памяти, куда будет выполнена запись. Значения начинаются с «0». Тип данных – int.
data – объект, значение которого нужно прочесть. Это может быть и примитивный тип данных (например, float), и пользовательский struct.
data – объект, значение которого нужно прочесть. Это может быть и примитивный тип данных (например, float), и пользовательский struct.
Строка 32: Строка 31:
== Пример ==
== Пример ==


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
/***
/***
     Пример eeprom_put  
     Пример eeprom_put  
Строка 99: Строка 98:
# EEPROM.update()
# EEPROM.update()
# EEPROM.get()
# EEPROM.get()


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


<references />
<references />
{{Навигационная таблица/Портал/Arduino}}


{{Навигационная таблица/Arduino библиотеки}}


[[Категория:Стандартные библиотеки]]
[[Категория:Стандартные библиотеки]]

Текущая версия от 12:21, 8 июля 2023

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

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

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

Синтаксис

EEPROM.put(address, data)

Параметры

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

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

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

Примечание

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

Пример

/***
    Пример 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() {
  /* пустой цикл */
}

См.также

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


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