| Ваш IP: 3.235.74.184 | Online(37) - гости: 17, боты: 20 | Загрузка сервера: 0.53 ::::::::::::

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.

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

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

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

  • Усилитель мощности 6 Вт на TDA7245A

    Усилитель мощности 6 Вт на TDA7245A

    Усилитель мощности на TDA7245A с фиксированным усилением предназначен для использования в бытовой аудиотехнике. Микросхема снабжена функциями STAND-BY и тепловой защитой. Усилитель на базе TDA7245A обладает следующими техническими характеристиками: Номинальное напряжение питания 16,5В Напряжение питания 12…30В Ток покоя 17…25мА в зависимости от напряжения питания Выходная мощность при КНИ=10% 12Вт Выходная мощность …Подробнее...
  • TPS6108x: повышающий преобразователь с широким спектром применения

    Автор: Джефф Фалин Повышающие преобразователи напряжения TPS61080 и TPS61081 благодаря многочисленным интегрированным функциям и развитым схемам защиты можно применять в самых разнообразных областях, среди которых – промышленная автоматика, медицинская электроника, телекоммуникации. Особенно хорошо они приспособлены для питания светодиодных дисплеев и их подсветки. В статье инженера компании Texas Instruments подробно рассмотрены …Подробнее...
  • УНЧ на TDA1521

    УНЧ на TDA1521

    Напряжение питания ±7,5…21В Максимальный ток нагрузки 2,2А Выходная мощность при Uп=12В Rн=8Ом: КНИ = 0,5% — 6Вт КНИ = 10% — 8Вт Ток покоя 70мАПодробнее...
  • TDA7384A — 4 x 35Вт аудиоусилитель

    TDA7384A — 4 x 35Вт аудиоусилитель

    TDA7384A — четырехканальный усилитель мощности звуковой частоты, усилитель на базе TDA7384A относится к классу AB, с максимальной выходной мощностью до 4×35 Вт при нагрузке 4 Ом.  В усилителе имеется функция бесшумного выключения выходного сигнала Mute и переход в ждущий режим Stand-By. Усилитель обладает низким уровнем собственных шумов и малым коэффициентом …Подробнее...
  • УСИЛИТЕЛЬ НЧ НА ТРЕХ ТРАНЗИСТОРАХ

    УСИЛИТЕЛЬ НЧ НА ТРЕХ ТРАНЗИСТОРАХ

    На рис. показана схема простейшего усилителя НЧ, в котором можно использовать источник питания напряжением 4,5 или 9 В. При сопротивлении нагрузки 10 Ом и напряжении питания 4,5 В номинальная выходная мощность равна 70…80 мВт, а при повышении напряжения до 9 В 120… 150 мВт. В усилителе применены германиевые маломощные низкочастотные …Подробнее...