Как сохранить данные в arduino при отключении питания

Я занимаюсь проектом "управление коммутатором на основе arduino". Здесь пользователю необходимо установить время для включения реле и установить время для его выключения. Проблема в том, что я хочу подавать питание на arduino с помощью адаптера, подключенного к источнику переменного тока (где также будет подключено реле). Когда установлено время включения и если питание отключается на некоторое время, то эта система не работает. Я хочу сохранить данные в arduino, чтобы они сохранялись при возврате питания.. Так что мое реле срабатывает вовремя.. Как это сделать, ребята???

, 👍1

Обсуждение

Посмотрите на этот ответ https://arduinoprosto.ru/q/72370/14490, @gbg

Может быть, я не понимаю вопроса, но идея не должна быть такой: Arduino всегда включен, а время включения и выключения зависит от включения / выключения реле... Если вы хотите, чтобы Arduino тоже был выключен, вам нужен хотя бы некоторый заряд батареи и использование режима ожидания i.c.m. с триггером прерывания, установленным на некоторые часы реального времени, чтобы иметь возможность "разбудить" его., @Michel Keijzers

Неясно, хотите ли вы отключить Arduino при обычной работе или просто хотите сохранить настройки времени в случае отключения питания. Пожалуйста, объясните это яснее, @chrisl


3 ответа


Лучший ответ:

1

Найдите EEPROM. это память, которая сохраняет содержимое даже при выключенном питании.

Вы можете записывать данные в EEPROM, а когда питание вернется, считывать их обратно.

существуют безопасные способы записи в EEPROM, не повреждая его.

,

0

Помимо ответа Георгия, я хотел бы рассказать вам некоторые подробности.

Во - первых :

микроконтроллер может иметь встроенный EEPROM, такой как ATmega328, внутри Arduino UNO / Nano / mini, если вам не нужно будет подключать внешний, он может иметь интерфейсы, такие как SPI или IIC и т. Д. ...

Во - вторых :

EEPROM может содержать только определенный объем данных, он может составлять 512 байт, как на микроконтроллерах ATmega328, на других он может составлять только 64 байта.

Третье :

EEPROM имеет адреса, поэтому, например, в 8-разрядной EEPROM один адрес может содержать только 8 бит, поэтому значения от (0-255), как на ATmega328

Четвертое: как его использовать

В начале вашего кода вы должны сначала включить библиотеку eeprom

#include <EEPROM.h>

Затем вы могли бы, например, присвоить значение "24" одному из адресов в EEPROM, скажем, адресу "1".

Таким образом, вы будете использовать

EEPROM.write(1,24);

Конечно, вы можете отключить питание платы и снова включить ее, и этому конкретному адресу будет присвоено 8-битное значение "24".

Чтобы прочитать обратно

EEPROM.read(24);

Я надеюсь, что это поможет вам или кому-нибудь еще.

И в качестве примечания, EEPROM определил циклы записи и чтения ~ 10000, возможно, ~ 100000, после этой суммы это может не сработать.

Оригинальная документация : здесь

,

0

Вы можете сделать это, используя RTC (модуль часов реального времени) в своем проекте.

,

И * как * вы бы это сделали? "Как мне добраться из Нью-Йорка в Трентон?" "Ты можешь вести машину". Вряд ли это поможет., @Majenko

Конечно, вряд ли это поможет. Но похоже на вопрос. Кроме того, заголовок вопроса "Как сохранить данные в arduino при отключении питания" пахнет как EEPROM..., @DataFiddler