| Ваш IP: 54.159.44.54 | Online(27) - гости: 25, боты: 2 | Загрузка сервера: 1.68 ::::::::::::

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.

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

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

  • Двухтональная сирена

    На рис. 1 изображена принципиальная схема двутональной сирены. Она обеспечивает поочередное звучание двух звуковых тонов. Схема содержит три автогенератора: задающий (ЗГ) на элементах DD1.1, DD1.2 на частоту примерно 1 Гц и два звуковых — на элементах DD2.1, DD2.2 и на элементах DD2.3, DD2.4. Чтобы звуковые генераторы работали поочередно, управляющие импульсы …Подробнее...
  • УМЗЧ класса D мощностью 18Вт на базе TDA7482

    УМЗЧ класса D мощностью 18Вт на базе TDA7482

    Усилитель на базе TDA7482 имеет встроенную защиту от перегрева, перенапряжения и КЗ. Усилитель на TDA7482 имеет следующие характеристики: Напряжение питания от +/-10В до +/-25В (номинальное +/-21В) Ток покоя 40…60мА Выходная мощность 18Вт(Rн=4 Ом) при КНИ 1% и в номинальном напряжении питания  КНИ=0,1% при выходной мощности 1Вт на нагрузке 8 Ом …Подробнее...
  • Индикатор выходной мощности усилителя

    Индикатор выходной мощности усилителя

    На рисунке показана схема простого индикатора выходной мощности усилителя ЗЧ. Индикатор содержит 10 светодиодов, которые показывают выходную мощность усилителя от 0,2Вт до 100Вт. Основу схемы составляет микросхема LM3915, которая представляет собой светодиодный индикатор уровня аудио-сигнала. Сопротивление R1 зависит от сопротивления динамической головки используемой в АС (см. табл.). Напряжение питания от 12 до 20В. …Подробнее...
  • 2N3055 — Усилитель мощности

    2N3055 — Усилитель мощности

    На рисунке представлена схема простого усилителя. Номинальное напряжение питания усилителя 50В, но этот усилитель может так же работать при напряжении питания от 30 до 60В. Максимальное входное напряжение примерно от 0.8 — 1В. Вместо указанных транзисторов можно применить другие,  N-P-N- проводимости. Выходная мощность усилителя 60Вт при напряжении питания +50В. Некоторые …Подробнее...
  • Стереофонический регулятор громкости, баланса и тембра на LM1036

    Стереофонический регулятор громкости, баланса и тембра на LM1036

    Стереофонический регулятор громкости, баланса и тембра на LM1036 имеет следующие характеристики: Напряжение питания 9…16В(12В номинальное) Регулировка громкости в диапазоне 75дБ Регулировка тембра +/-15дБ Коэффициент нелинейных искажений 0,06% при Uвх=0,3В Отношение сигнал/шум -80дБ Мощность рассеивания  1Вт Ток потребления 35…45мА Uвых максимальное — 0,8 (Uпит=12В) Разделение каналов 75…60дБПодробнее...