Вопрос по переменным
- Войдите на сайт для отправки комментариев
Пнд, 19/02/2018 - 21:53
В скетче, в переменные заносятся данные.
Как сделать так, чтобы при отключении/перезагрузке ардуино, данные с переменных не сбрасывались?
при изменении данных записывать их в EEPROM, а при включении мк в сетапе прочитать из памяти.
А подскажи, как это реализовать?
http://arduino.ru/Reference/Library/EEPROM
http://wikihandbk.com/wiki/Arduino:%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%...
Прочитал, по примеру немного не понял. Если не затруднит, подскажи пожалуйста, как это реализовать в вот этом коде,чтобы значение hour записывалось.
hour = (millis()-timemark)/MSEK_PER_HOUR; if (hour == 8) { if (an_3 > 40000) { digitalWrite(len, HIGH); digitalWrite(cpr, LOW); delay(600000); } timemark=millis(); } else { }LamaKING, по Вашему описанию не совсем понятно, чего именно Вы хотите.
В зависимости от того, что Вам нужно, может, поможет совет совет из ответа №1, м может, Вам достаточно будет просто описать ваши "переменные" как константы (const).
У меня в скетче идет отчет времени и раз в 8 часов выполняется определенная функция.
Допустим отчет дошел до 6 часов, а питание пропало на ардуине. И я хочу, чтобы значение 6 оставалось, а не скидывалось.
А если питание пропало на три часа, то событие произойдет через 13... Смысла от такого хранения нет никакого.
Есть несколько вариантов.
Первый - использовать аккумулятор в качестве резервного питания и забыть о перебоях в напряжении.
Второй - ардуиной мониторить напряжение на блоке питания и как только оно пропало, записывать переменную в EEPROM. На питание ардуины поцепить конденсатор, чтобы он смог ее питать хоть немного времени после пропадания напряжения от блока питания, чтобы успеть записать данные в EEPROM. И развязать диодом блок питания и ардуину с конденсатором, чтобы не было влияния заряда конденсатора на мониторинг напряжения.
Третий - периодически записывать состояние переменной в EEPROM, помня об ограниченном количестве циклов записи туда.
Четвертый - использовать RTC и читать время оттуда.
У меня в скетче идет отчет времени и раз в 8 часов выполняется определенная функция.
Допустим отчет дошел до 6 часов, а питание пропало на ардуине. И я хочу, чтобы значение 6 оставалось, а не скидывалось.
ну так кждую минуту записывайте время в память.
Прочитал, по примеру немного не понял. Если не затруднит, подскажи пожалуйста, как это реализовать в вот этом коде,чтобы значение hour записывалось.
hour = (millis()-timemark)/MSEK_PER_HOUR; if (hour == 8) { if (an_3 > 40000) { digitalWrite(len, HIGH); digitalWrite(cpr, LOW); delay(600000); } timemark=millis(); } else { }какая то пурга с такими делеями))))
вы же миллис используете, так вместо делеев и запускайте таймер.
В ардуино я всего неделю, по этому незнаю как)))
ну раз всего неделю, то сначала почитайте что то по программированию, хотя бы с этого начните
http://arduino.ru/Reference
разбейте свою задачу на несколько простых этапов, сначала их доведите, а потом собирайте до кучи.
С этим всем ознакомился) И это предпоследний этап, который нужно реализовать
ну так кждую минуту записывайте время в память.
При таком раскладе еепрома хватит на 2а месяца. (Гарантированных даташитом) если миллион циклов взять то на год.
мы же не знаем на сколько нужно готовое устройство))))
ну и никто не запрещает сделать меняющийся адрес при достижении 100000 циклов записи)))
Можно выводить переменные на экран или в монитор порта. Перед выключением питания записывать их на бумажку. А при включении вводить с этой бумажки. И проблема решена.
Можно выводить переменные на экран или в монитор порта. Перед выключением питания записывать их на бумажку. А при включении вводить с этой бумажки. И проблема решена.
Это называлось раньше "твёрдая копия"
Оно самое!