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

Arduino:Примеры/EEPROMPut

Материал из Онлайн справочника
< Arduino:Примеры
Версия от 03:00, 14 декабря 2016; Myagkij (обсуждение | вклад) (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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

Контакты:

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


Запись данных в EEPROM с помощью функции EEPROM.put()[1]

Микроконтроллер на плате Arduino/Genuino имеет, как правило, 512 байт EEPROM-памяти (у моделей Uno и Mega ее объем составляет 1 Кб и 4 Кб соответственно) – она хранит информацию, даже если плата находится в выключенном состоянии. Другими словами, это что-то вроде крошечного жесткого диска.

Цель этого примера – показать, как работает функция EEPROM.put(). Она использует тот же метод, что и EEPROM.update(), т.е. делает перезапись лишь в том случае, если новые данные, записываемые в указанную ячейку, отличаются от предыдущих. Количество записываемых байтов зависит от типа данных, помещенных в объект (будь то переменная или пользовательский объект).

Необходимое оборудование

  • Плата Arduino или Genuino

Цепь

Для этого примера никакой цепи строить не нужно.

ArduinoUNO bb.png

Схема

ArduinoUNO sch.png

Код

  1. /***
  2.     Пример eeprom_put
  3.  
  4.     Этот пример показывает, как использовать функцию EEPROM.put().
  5.     Также он подготавливает EEPROM-данные для примера eeprom_get.
  6.  
  7.     В отличие от функции EEPROM.write(), EEPROM.put() может
  8.     оперировать не одним, а несколькими байтами. Кроме того, она
  9.     работает по принципу EEPROM.update() и делает перезапись только
  10.     в том случае, если новые данные отличаются от предыдущих.
  11.  
  12.     Автор – Кристофер Эндрюс (Christopher Andrews), 2015 год.
  13.     Выпущено под лицензией MIT.
  14. ***/
  15.  
  16. #include <EEPROM.h>
  17.  
  18. struct MyObject {
  19.   float field1;
  20.   byte field2;
  21.   char name[10];
  22. };
  23.  
  24. void setup() {
  25.  
  26.   Serial.begin(9600);
  27.   while (!Serial) {
  28.     ; // ждем подключения последовательного порта (нужно только для Arduino со штатным USB-портом)
  29.   }
  30.  
  31.   float f = 123.456f;  // переменная для записи в EEPROM-память
  32.   int eeAddress = 0;   // участок EEPROM-памяти, куда будет выполнена запись
  33.  
  34.  
  35.   // далее – один простой вызов функции EEPROM.put();
  36.   // первый аргумент – адрес, второй – объект:
  37.   EEPROM.put(eeAddress, f);
  38.  
  39.   Serial.println("Written float data type!"); // "float-данные, записанные в EEPROM-память: "
  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 library reference
  2. EEPROM Clear - Fills the content of the EEPROM memory with “0”.
  3. EEPROM Read – Reads values stored into EEPROM and prints them on Serial.
  4. EEPROM Write – Stores values read from A0 into EEPROM.
  5. EEPROM Crc – Calculates the CRC of EEPROM contents as if it was an array.
  6. EEPROM Iteration – Programming examples on how to go through the EEPROM memory locations.
  7. EEPROM Get – Get values from EEPROM and prints as float on serial.
  8. EEPROM Update – Stores values read from A0 into EEPROM, writing the value only if different, to increase EEPROM life.

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

  1. Arduino - EEPROM Put