| Ваш IP: 54.235.4.196 | Online(26) - гости: 13, боты: 13 | Загрузка сервера: 1.01 ::::::::::::

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.

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

Войти с помощью: 

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

  • Охранная сигнализация

    Охранная сигнализация

    Охранная сигнализация состоит из ИК — передатчика и приемника. ИК светодиоды передатчика ориентированы в направлении приемника, при прерывании ИК излучения приемник начнет издавать сигнал. Дальность действия охранной сигнализации 5 метров. Передатчик находится в режиме постоянного излучения. Рекомендуется ИК светодиоды поместить в свето-изолирующие трубки и направить их на фотодиод приемника. Источник — http://www.electroschematics.com/6131/photodiode-alarm/  Подробнее...
  • Портативный дозиметр

    Относительно несложный дозиметр предлагается для повторения, он может работать с любим из счетчиков ионизирующих частиц: СБМ-10, СБМ-19, СБМ-20, СБМ-21, СБТ-7, СБТ-9, СТС-5 и др. Так как счетчики Гейгера разных типов имеют разную фоновую активность, то изменяя время измерения можно в предлагаемом уст-ве использовать практически любые счетчики. Информация в уст-ве отображается …Подробнее...
  • Простой источник питания 0…+15В

    Простой источник питания 0…+15В

    На рисунке показана схема простого источника питания с выходным напряжением от 0 до +15 В и максимальным током нагрузки до 1 А. Транзистор VT1 должен быть установлен на небольшой теплоотвод. Трансформатор стандартный с напряжением на вторичной обмотке 18 В и максимальным током 1,5 А. Регулировка выходного напряжения производится при помощи …Подробнее...
  • Сигнализатор ЗАДНИЙ ХОД

    Схема устр-ва показана на рисунке, оно подключается к лампам заднего хода любого автомобиля с соблюдением полярности, но при этом VD3 защищает уст-во от переполусовки. Мультивибратор на D1.1 D1.2 вырабатывает импульсы отрицательные импульсы, длительность и частоту которых можно установить резисторами R2 R2. Эти импульсы поступают на вывод 8 D1.3 входящего в …Подробнее...
  • УМЗЧ 2х12Вт на ИМС TDA2616

    УМЗЧ 2х12Вт на ИМС TDA2616

    На микросхеме TDA2616 можно собрать простой и качественный усилитель мощности звуковой частоты. Выходная мощность усилителя 12Вт на канал (+\-16В) при сопротивлении нагрузки 8 Ом, при этом КНИ не превышает 0,5%. Технические характеристики усилителя: Минимальное напряжение питания 7,5В Максимальное напряжение питания 21В Максимальная выходная мощность 12Вт на канал Сопротивление нагрузки 8 …Подробнее...