+4 голосов

Привет!

Есть программа работающая на Arduino, в результате работы образуется 3 переменные, 

Внимание вопрос:

Как вы сохраняете переменные при отключении питания (света в доме например)? Программа перезапускается, а переменных нет. Существует ли способ!? 

Есть переменные которые используются в точной настройке программы, они переменные, но при этом не так часто обновляются, может раз в час, не более.....но.....если отключат свет, и программа перезапустится, выставятся усредненные стартовые значения, что не есть ГУД! 

(47 баллов) 2 8 14
исправил

3 Ответы

+4 голосов
 
Лучший ответ
Есть два варианта. 1-й периодически записывайте свои переменные в EEPROM, но при этом помните что количество циклов записи ограничено и при слишком частом сохранении ресурс памяти будет быстро исчерпан. 2-й - анализируйте наличие питания и в аварийной ситуации также сохраняйте данные в EEPROM. Для того чтобы при пропадании питания ардуина успела записать данные в память ипользуйте конденсаторы большой емкости или ионистор. При старте программы считывайте записанные данные и используйте их в своем коде.
(221 баллов) 1 4 16
выбран
Второй вариант — весьма умно!
+3 голосов
Ардуину нужно запитать 9Вольт через диод  на Vin и до диода подключить через делитель аналоговый вход для контроля напряжения  , как только напряжение на Vin будет ниже 7Вольт сделайте так чтобы производилась запись нужных переменных в EEPROM. А по питанию 5В Ардуины нужно поставить конденсатор 1000мкФ для поддержания напряжения на время записи.
(593 баллов) 4 8 19
+1 голос
Можно использовать sd-карту. Места куча, может пригодиться и для больших данных. Сам имею несколько старых карточек по 128 - 256 МБ.
(72 баллов) 2 4 9
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. KrSV

    2 балл(ов)

  2. Палыч

    2 балл(ов)

  3. Дамир

    2 балл(ов)

  4. lcco

    2 балл(ов)

  5. Ergamister

    2 балл(ов)

  6. Александр312

    2 балл(ов)

...