| Ваш IP: 34.224.102.60 | Online(14) - гости: 6, боты: 8 | Загрузка сервера: 0.92 ::::::::::::

EEPROM.put (Arduino)

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

При записи данных в EEPROM размер которых превышает 1 байт, необходимо корректный расчет адресов по которым будет производится запись, для расчета адресов используется функция sizeof(). Для чтения используется функция EEPROM.get(), для нее так же необходимо пользоваться функцией sizeof()  для определения точных адресов при считывании информации.

Пример использования:

#include <EEPROM.h>                      

int address = 0;// Начальный адресс ячейки памяти 

unsigned long value1 = 44446587; // Переменная 1 типа unsigned long
long value2 = 65678; // Переменная 2 типа  long
float value3 = 1.5678; // Переменная 3 типа float

void setup() {
  Serial.begin(9600);

  EEPROM.put(address, value1);// Запись переменной 1

 // Для вычисления следующего доступного адреса, необходимо получить объем памяти,отведенной под предыдущее значение
  
  address = address + sizeof(unsigned long);// Указываем тип данных предыдущего значения
  EEPROM.put(address, value2);// Запись переменной 2
  
  address = address + sizeof(long);// Указываем тип данных предыдущего значения
  EEPROM.put(address, value3);// Запись переменной 3
  
  // Чтение данных из EEPROM
  address = 0;// Переходим на начальный адрес
  EEPROM.get(address, value1);
  address = address + sizeof(unsigned long);
  EEPROM.get(address, value2);
  address = address + sizeof(long);
  EEPROM.get(address, value3);

  Serial.println( value1);
  Serial.println( value2);
  Serial.println( value3,4);
}

void loop() {}

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

Для записи в энергонезависимую память функция EEPROM.put() использует функцию EEPROM.update(), таким образом, функция не перезапишет данные, если они не изменились, тем самым сэкономит циклы перезаписи.

При записи в EEPROM пользовательских данных типа char можно пользоваться следующим примером:

#include <EEPROM.h>                      

int address = 0;// Начальный адресс ячейки памяти 


float value3 = 1.5678; 
char value4[7] = "Privet";

void setup() {
  Serial.begin(9600);
  
  EEPROM.put(address, value3);

  address = address + sizeof(float);// Указываем тип данных предыдущего значения
  
  EEPROM.put(address, value4);
  
  // Чтение данных из EEPROM
  address = 0;// Переходим на начальный адрес
 
  EEPROM.get(address, value3);
  address = address + sizeof(float);
  EEPROM.get(address, value4);

  Serial.println( value3,4);
  Serial.println(String(value4));
}

void loop() {}

На примере видно, что данные типа char нужно использовать как массив, а для считывания использовать String.

Добавить комментарий

Случайные статьи

  • Аналоговый метод управления яркостью

    На рисунке показана электрическая схема регулируемого ЭПРА для управления 26 Вт четырехвыводными компактными люминесцентными лампами (CFL) от сети 220 В с гальванически изолированным аналоговым входом управления яркостью 1…10 В. Балласт включает в себя: фильтр ЭМИ для уменьшения собственного генерируемого шума; выпрямитель и конденсатор для преобразования переменного входного напряжения в постоянное; контроллер и транзисторный …Подробнее...
  • Индикаторы для лабораторного источника питания

    Используя доступные микросхемы АЦП КР572ПВ2А(Б), можно сделать для ИП два простых цифровых измерителя, один из которых будет показывать напряжение от 0 до 99,9В, а второй ток от 0 до 9,99А. На рис.1 показана схема измерителя напряжения (3-х разрядная индикация) позволяющая отображать напряжение от 0 до 99,9В с шагом 0,1В. Такой …Подробнее...
  • Регулятор для паяльника

    Регулятор позволяет плавно регулировать температуру от 50 до 100% от номинальной. Открыванием тиристора управляет мультивибратор с регулируемой R3 скважностью. Транзисторы любые германиевые НЧ — МП39-42, диоды Д226 Д237 и др., тиристор КУ201 КУ202 И-Н. Общее сопротивление гасящих резисторов R6-R8 — 12…14кОм, суммарная мощность рассеивания не менее 5 Вт. Внимание!!! Схема …Подробнее...
  • Простой измеритель емкости электролитических конденсаторов (0-200мкФ, 0-1000мкФ)

    На рисунке представлена схема простого измерителя электролитических конденсаторов с 2-я диапазонами: 0-200 и 0-1000мкФ и погрешностью измерения не более 10%. Принцип работы измерителя состоит на измерении пульсаций выпрямленного напряжения. Для этого поверяемый конденсатор подключают к делителю напряжения R1 R2 и измеряют амплитуду пульсаций на резисторе R2. При измерении емкости до …Подробнее...
  • УМЗЧ на микросхеме TDA1552Q

    УМЗЧ на микросхеме TDA1552Q

    Усилитель при высоком качестве звучания очень прост в изготовлении и не нуждается в налаживании. Он имеет универсальный вход с плавной регулировкой чувствительности. Это практически «полный» усилитель, но без входов для микрофона и звукоснимателя. Усилитель мощности реализован на МС фирмы Philips TDA1552Q. Схема его включения позаимствована из [1]. Предварительный усилитель собран …Подробнее...