| Ваш IP: 54.158.248.112 | Online(20) - гости: 12, боты: 8 | Загрузка сервера: 2.66 ::::::::::::

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.

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

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

  • Сторожевое устройство

    Для защиты дачного участка от непрошенных гостей, для ограждения опасных объектов можно использовать сторожевое устройство. Схема такого устройства (первый вариант) показана на рис. Объект, нуждающийся в охране, окружают по периметру медным обмоточным проводом диаметром 0,1… 0,3 мм. Этот охранный шлейф может быть прикреплен к забору или к вбитым в землю …Подробнее...
  • Регулируемый источник питания с защитой по току

    На рис.1 изображена схема стабилизатора, от которой можно питать не только автомобильный магнитофон, но и любую радиолюбительскую конструкцию с напряжением от 1 до 35 В и которой не страшны большие токи нагрузки, поскольку введена токовая защита. Регулятор напряжения собран на микросхеме DA1, которая дополнена мощным транзистором, который может отдать в …Подробнее...
  • Импульсные регуляторы напряжения MC34063A, MC33063A, NCV33063A

    Импульсные регуляторы напряжения MC34063A, MC33063A, NCV33063A

    Импульсные регуляторы напряжения MC34063A, MC33063A, NCV33063A — специально разработанные микросхемы для DC-DC преобразователей с минимальным количеством внешних элементов. Технические параметры Диапазон входных напряжений 3…40 В Диапазон выходных напряжений 1.25…40 В Максимальный выходной ток 1.5 А Рабочая частота 33 кГц На рисунках показаны типовые схемы подключения регуляторов напряжения, повышающий, понижающий и инверсный. Основные элементы …Подробнее...
  • Переключатель гирлянд с плавным изменением яркости

    Предложенный переключатель гирлянд собран на 2-х микросхемах. На DD1 выполнен симметричный мультивибратор, частоту которого можно регулировать в пределах от 195 до 205 Гц переменным резистором R2. Через инверторы DD1.3 DD1.4 прямоугольные импульсы мультивибратора поступают на триггеры DD2.1-DD2.2 которые выполняют роль делителей частоты. Выходные сигналы триггеров поступают на усилители тока VT1-VT4 …Подробнее...
  • Импульсный стабилизатор напряжения 5 В с высоким КПД

    В этом стабилизаторе используется специализированная ИМС LM2575-5,0. Его выходное напряжение составляет 5 В и задано типом примененной ИМС. Входное напряжение стабилизатора может составлять от 7 до 40 В. Выходной сигнал ИМС на выв. 2 представляет собой серию широтно-модулированных импульсов. После фильтрации цепью L1С2 это напряжение поступает на нагрузку и на …Подробнее...