
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

В этой статье мы собираемся изучить внутреннюю EEPROM в наших платах Arduino. Что такое EEPROM, возможно, некоторые из вас говорят? EEPROM - это электрически стираемая программируемая постоянная память.
Это форма энергонезависимой памяти, которая может запоминать вещи при выключенном питании или после перезагрузки Arduino. Прелесть такого типа памяти в том, что мы можем хранить данные, созданные в эскизе, на более постоянной основе.
Зачем вам использовать внутреннюю EEPROM? Для ситуаций, когда данные, уникальные для конкретной ситуации, нуждаются в более постоянном месте. Например, сохранение уникального серийного номера и даты изготовления коммерческого проекта на базе Arduino - функция эскиза может отображать серийный номер на ЖК-дисплее, или данные могут быть прочитаны путем загрузки «служебного эскиза». Или вам может потребоваться подсчитать определенные события и не разрешить пользователю сбрасывать их - например, одометр или счетчик рабочих циклов.
Шаг 1. Какие типы данных можно хранить?

Все, что может быть представлено в виде байтов данных. Один байт данных состоит из восьми битов данных. Бит может быть включен (значение 1) или выключен (значение 0) и идеально подходит для представления чисел в двоичной форме. Другими словами, двоичное число может использовать только нули и единицы для представления значения. Таким образом, двоичный код также известен как «основание-2», так как он может использовать только две цифры.
Как двоичное число, состоящее только из двух цифр, может представлять большее число? В нем много нулей и единиц. Давайте рассмотрим двоичное число, например 10101010. Поскольку это число с основанием 2, каждая цифра представляет 2 в степени x, начиная с x = 0.
Шаг 2:

Посмотрите, как каждая цифра двоичного числа может представлять собой десятичное число. Таким образом, приведенное выше двоичное число представляет 85 по основанию 10 - значение 85 является суммой значений по основанию 10. Другой пример - 11111111 в двоичном формате равно 255 по основанию 10.
Шаг 3:
Теперь каждая цифра в этом двоичном числе использует один «бит» памяти, а восемь битов составляют байт. Из-за внутренних ограничений микроконтроллеров в наших платах Arduino мы можем хранить только 8-битные числа (один байт) в EEPROM.
Это ограничивает десятичное значение числа от нуля до 255. Затем вам решать, как ваши данные могут быть представлены в этом диапазоне чисел. Пусть это вас не смущает - числа, расположенные правильно, могут обозначать практически все! Есть одно ограничение, на которое следует обратить внимание - количество раз, которое мы можем читать или писать в EEPROM. По заявлению производителя Atmel, EEPROM рассчитан на 100 000 циклов чтения / записи (см. Техническое описание).
Шаг 4:
Теперь мы знаем наши биты и байты, сколько байтов можно сохранить в микроконтроллере Arduino? Ответ зависит от модели микроконтроллера. Например:
- Платы с Atmel ATmega328, такие как Arduino Uno, Uno SMD, Nano, Lilypad и др. - 1024 байта (1 килобайт)
- Платы с Atmel ATmega1280 или 2560, такие как серия Arduino Mega - 4096 байт (4 килобайта)
- Платы с Atmel ATmega168, такие как оригинальный Arduino Lilypad, старый Nano, Diecimila и т. Д. - 512 байт.
Если вы не уверены, посмотрите индекс оборудования Arduino или спросите своего поставщика платы. Если вам нужно больше памяти EEPROM, чем доступно с вашим микроконтроллером, рассмотрите возможность использования внешнего EEPROM I2C.
На этом этапе мы понимаем, какие данные и сколько могут храниться в EEPROM нашей Arduino. Пришло время воплотить это в жизнь. Как обсуждалось ранее, для наших данных существует ограниченное пространство. В следующих примерах мы будем использовать типичную плату Arduino с ATmega328 с 1024 байтами памяти EEPROM.
Шаг 5:
Для использования EEPROM требуется библиотека, поэтому используйте в своих эскизах следующую библиотеку:
#include "EEPROM.h"
В остальном все очень просто. Для хранения фрагмента данных мы используем следующую функцию:
EEPROM.write (а, б);
Параметр a - это позиция в EEPROM для хранения целого числа (0 ~ 255) данных b. В этом примере у нас есть 1024 байта памяти для хранения, поэтому значение a находится в диапазоне от 0 до 1023. Чтобы получить часть данных также просто, используйте:
z = EEPROM.read (a);
Где z - целое число для хранения данных из позиции EEPROM a. Теперь посмотрим на пример.
Шаг 6:

Этот скетч будет создавать случайные числа от 0 до 255, сохранять их в EEPROM, а затем извлекать и отображать их на последовательном мониторе. Переменная EEsize - это верхний предел размера EEPROM, поэтому (например) это будет 1024 для Arduino Uno или 4096 для Mega.
// Демонстрация внутренней EEPROM Arduino
#включают
int zz; int EEsize = 1024; // размер в байтах EEPROM вашей платы
установка void ()
{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println («Запись случайных чисел…»); для (int я = 0; я <EEsize; я ++) {zz = случайный (255); EEPROM.write (i, zz); } Serial.println (); для (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("Положение EEPROM:"); Serial.print (а); Serial.print ("содержит"); Serial.println (zz); задержка (25); }}
Появится вывод последовательного монитора, как показано на изображении.
Итак, у вас есть еще один полезный способ хранения данных с нашими системами Arduino. Хотя это не самое захватывающее руководство, оно, безусловно, полезно.
Этот пост предоставлен pmdway.com - все для производителей и любителей электроники с бесплатной доставкой по всему миру.
Рекомендуемые:
Fanair: метеостанция для вашей комнаты: 6 шагов (с изображениями)

Fanair: метеостанция для вашей комнаты: есть бесчисленное множество способов узнать текущую погоду, но тогда вы знаете только погоду на улице. Что, если вы хотите узнать погоду в своем доме, в конкретной комнате? Вот что я пытаюсь решить с помощью этого проекта. Fanair использует муль
Предупреждение о воде - средство для спасения вашей лодки: 5 шагов (с изображениями)

Предупреждение о воде - способ спасти вашу лодку: если вы владелец лодки, то, наконец, вывести лодку на сушу - это надежный комфорт. Там он не может утонуть. Повсюду он сталкивается с постоянной борьбой за преодоление тенденции поскользнуться под волнами и исчезнуть. Зимой здесь, в Увы
Написание вашей первой компьютерной программы: 10 шагов

Написание вашей первой компьютерной программы: зачем программирование? Компьютерное программирование или «кодирование» кажется очень пугающим. Возможно, вы не думаете, что недостаточно разбираетесь в компьютерах, и опасаетесь устранения неполадок, возникающих на вашем личном ноутбуке. Если вы верите, что ваш
Встроенная светодиодная 3D-печать рождественской елки: 10 шагов (с изображениями)

Встроенная светодиодная 3D-печатная рождественская елка: это 3D-печатная рождественская елка со встроенными адресными светодиодами внутри. Таким образом, можно запрограммировать светодиоды для получения красивых световых эффектов и использовать 3D-печатную структуру в качестве диффузора. Дерево разделено на 4 этапа и базовый элемент (дерево
Встроенная универсальная интерфейсная плата - управление USB / Bluetooth / WIFI: 6 шагов

Встроенная универсальная интерфейсная плата - управление USB / Bluetooth / WIFI: я часто нахожу, что создаю библиотеки для новых встроенных модулей с нуля на основе таблицы данных устройства. При создании библиотеки я застреваю в цикле кода, компиляции, программирования и тестирования, чтобы убедиться, что все работает и не содержит ошибок. Часто ком