Arduino:Примеры/EEPROMGet
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Извлечение данных из EEPROM с помощью функции EEPROM.get()[1]
Микроконтроллер на плате Arduino/Genuino имеет, как правило, 512 байт EEPROM-памяти (у моделей Uno и Mega ее объем составляет 1 Кб и 4 Кб соответственно) – она хранит информацию, даже если плата находится в выключенном состоянии. Другими словами, это что-то вроде крошечного жесткого диска.
Цель этого урока – на практике продемонстрировать, чем функции EEPROM.get() и EEPROM.put() отличаются от EEPROM.read() и EEPROM.write(). Последние две могут оперировать не одним, а несколькими байтами, и их количество зависит от типа данных, которые хранятся в обрабатываемой переменной.
Необходимое оборудование
- Плата Arduino или Genuino
Цепь
Для этого примера никакой цепи строить не нужно.
Схема
Код
/***
Пример eeprom_get
Этот пример показывает, как использовать функцию EEPROM.get().
Чтобы подготовить EEPROM-память к этому скетчу, сначала запустите
скетч-пример eeprom_put.
Впрочем, eeprom_get можно запустить и без eeprom_put, но будьте
готовы к тому, что в мониторе порта будут отображены не очень
смотрибельные данные (это «сырые» данные, которые уже хранятся
в EEPROM-памяти).
К примеру, EEPROM.get() может вернуть очень длинную строку
мусорных данных (если в этих строках нет нуля).
Автор – Кристофер Эндрюс (Christopher Andrews), 2015 год.
Выпущено под лицензией MIT.
***/
#include <EEPROM.h>
void setup() {
float f = 0.00f; // переменная для хранения данных, считанных из EEPROM-памяти
int eeAddress = 0; // участок EEPROM-памяти, с которого будет начато считывание
Serial.begin(9600);
while (!Serial) {
; // ждем подключения последовательного порта (нужно только для Arduino со штатным USB-портом)
}
Serial.print("Read float from EEPROM: "); // "float-данные, извлеченные из EEPROM-памяти: "
// Извлекаем из EEPROM-памяти float-данные, находящиеся по адресу «eeAddress»:
EEPROM.get(eeAddress, f);
Serial.println(f, 3); // если извлеченные данные не будут соответствовать типу float, эта функция может вернуть фразу «ovf, nan»
/***
Поскольку EEPROM.get() также возвращает отсылку к «f», всю эту конструкцию можно уместить в одной строке:
E.g: Serial.print( EEPROM.get( eeAddress, f ) );
***/
/***
Эту функцию можно использовать и с пользовательскими объектами.
Я решил продемонстрировать это в отдельной функции.
***/
secondTest(); // запускаем следующий тест
}
struct MyObject {
float field1;
byte field2;
char name[10];
};
void secondTest() {
int eeAddress = sizeof(float); // перемещаемся к участку EEPROM-памяти, находящемуся вслед за тем, где хранится переменная «f»
MyObject customVar; // переменная для хранения данных пользовательского объекта, извлеченных из EEPROM-памяти
EEPROM.get(eeAddress, customVar);
Serial.println("Read custom object from EEPROM: "); // "Данные пользовательского объекта, извлеченные из EEPROM-памяти: "
Serial.println(customVar.field1);
Serial.println(customVar.field2);
Serial.println(customVar.name);
}
void loop() {
/* пустой цикл */
}
См.также
- EEPROM.get()
- EEPROM library reference
- EEPROM Clear - Fills the content of the EEPROM memory with “0”.
- EEPROM Read – Reads values stored into EEPROM and prints them on Serial.
- EEPROM Write – Stores values read from A0 into EEPROM.
- EEPROM Crc – Calculates the CRC of EEPROM contents as if it was an array.
- EEPROM Iteration – Programming examples on how to go through the EEPROM memory locations.
- EEPROM Put – Put values in EEPROM using variable semantics (differs from EEPROM.write() ).
- EEPROM Update – Stores values read from A0 into EEPROM, writing the value only if different, to increase EEPROM life.
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino