| Ваш IP: 54.198.23.251 | Online(34) - гости: 23, боты: 11 | Загрузка сервера: 2.76 ::::::::::::

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.

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

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

  • Детское пианино

    На рисунке показана схема музыкальной игрушки «Детское пианино». Ранее на сайте была опубликована схема аналогичной игрушки «Электронное пианино — детская игрушка» выполненная на таймере 555, предложенная ниже схема очень проста и содержит всего два транзистора и несколько пассивных элементов. Основа уст-ва мультивибратор, изменяя частото-задающюю цепочку путем нажатия на кнопки SA1-SA7 …Подробнее...
  • Усилитель мощности 300W

    Усилитель мощности 300W

    Во многих случаях мы хотим усилитель выдавал мощность больше чем 100W который является усилителем — средней мощности. Если вы хотите, чтобы усилитель подходил по мощности для небольшой комнаты, небольшого клуба или открытого пространства, то данный усилитель это что вы именно искали. Он легок в повторении и не содержит дорогих и …Подробнее...
  • Мощный лабораторный блок питания 2-30 В 20 А

    Мощный лабораторный блок питания 2-30 В 20 А

    Мощный лабораторный блок питания основан на микросхеме LM723, которая представляет собой интегральный стабилизатор с регулируемым выходным напряжением и схемой защиты от перегрузки. Выходное напряжение блока питания от 2 до 30 А при максимальном выходном токе 20 А. Блок питания состоит из схемы стабилизатора на LM723 и выходного регулятора напряжения на транзисторах …Подробнее...
  • Термометр на PIC16F628A (-55…+125 гр. Цельсия)

    Термометр на PIC16F628A (-55…+125 гр. Цельсия)

    На рисунке показана схема термометра выполненного на основе микроконтроллера PIC16F628A, в качестве датчика используется цифровой датчик температуры DS18B20. Индикатор термометра состоит из 4-х разрадного семисегментного индикатора. Диапазон измеряемой температуры от -55 до + 125 градусов Цельсия. Температура считывается каждые 15 секунд, время считывания можно изменить в коде.   Напряжение питания термометра 5В, …Подробнее...
  • Инвертор на NE555

    Инвертор на NE555

    Инвертор на NE555 преобразует положительное напряжение в отрицательное. Данное уст-во может применяться для питания уст-в с низким током потребления. Схема инвертора представляет собой стабильный мультивибратор на NE555 (2.3 кГц), который генерирует прямоугольные импульсы. Эти импульсы проходят через разделительный конденсатор С2, а затем поступают на выпрямитель VD1 VD2 и далее пульсирующее …Подробнее...