Дружба Serial и EEPROM
- Войдите на сайт для отправки комментариев
Сб, 11/03/2017 - 21:04
Доброго времени суток, господа.
Сколько не пытался - не получилось подружить EEPROM и Serial. При отключении Serial порта !НЕ ОТКЛЮЧАЯ САМУ АРДУИНКУ ИЗ КОМПЬЮТЕРА! и подключении заново, все обнуляется и значения выводятся заново. Пробовал и свой скетч и скетч из библиотеки. Не получилось.
Как сделать, чтобы динамическая переменнаяя сохранялась в EEPROM, а после выводилась в Сом порт, и Соотвественно, при отключении питания эта переменная не обнулялась?
Вы знаете, напоминает бессвязный бред. Влияние отключения или включения сериала на епром находится в границах диапазона от "не колышет" до "пох". Давайте как Вы вложите скетч (желательно небольшой) в котором этот эффект проявляется и прокомментируете в чём именно Вы видете его проявления.
Вот дали мне такой код (переделанный из моего). Но если любым способом прерывать общение компьютера и ардуинки(откл. питания, disconnect в приложении), то отсчет начинается заново.
Смысл скетча: нажимаешь на одну кнопку, то добавляется 10 к переменной money, нажимаешь на другую - добавляется 50 к переменной.
Нужно так, чтобы эта переменная записывалась в EEPROM и выводилась в Serial. Соотвественно - при отключении питания возобновлялся счет переменной. Тоесть если переменная была равна 100 при отключении, то после включения она опять должна быть равна 100.
1.По-моему, тут не хватает чтения из еепром при включении.
》нужно чтобы эта переменная записывалась в EEPROM
2. сделано так, что при каждом изменении значение записывается по новому адресу.
3. хорошо бы учесть дребезг кнопок.
если любым способом прерывать общение компьютера и ардуинки(откл. питания, disconnect в приложении), то отсчет начинается заново.
Отключение питания и перезапус монитора порта в данном контексте одно и тоже. И то, и другое приводит к перезегрузке. Т.е. Ваша проблема в том, что при перезагрузке Вы не читаете из EEPROM записанное туда значение, а начинаете всё заново.
Вы понимаете? Значение Вы туда записываете, а читать его оттуда кто будет?
Он учтен, одна кнопка подключена к 13 контакту, а он не дребезжит, т.к. на 13 пине висит светодиод. А вторая кнопка 3-х контактная.
Он учтен, одна кнопка подключена к 13 контакту, а он не дребезжит, т.к. на 13 пине висит светодиод. А вторая кнопка 3-х контактная.
я не знал что светодиоды дребезг кнопки устраняют, блин...
а Клапауций от незнания воще титановый велик изобретал...
Кроме светодиода резистор стоит.
а Клапауций от незнания воще титановый велик изобретал...
[мерзко хихикая, посыпает титановый велик радиоактивным пеплом]
Кроме светодиода резистор стоит.
"У ей в нутре думатель, анализатор и неонка. Думатель думает, анализатор анализирует, а неонка мигает" :)))
Я тут помучался, поизучал статейки. Получил такой говнокод:
Но проблема не изменилась. При ребуте счет начинается с "0". Я не понимаю что не так..
Кроме светодиода резистор стоит.
"У ей в нутре думатель, анализатор и неонка. Думатель думает, анализатор анализирует, а неонка мигает" :)))
Эдак светодиод скоро эвристической машиной станет:D
Я тут помучался, поизучал статейки. Получил такой говнокод:
Но проблема не изменилась. При ребуте счет начинается с "0". Я не понимаю что не так..
А чего Вы хотели? Вы ведь по прежнему не читаете из епрома! Формально Вы читаете, но как? Сначала записываете туда новые значения (строки 22-23) и затираете всё, что там было, а потом тут же (стр. 24-25) читаете свежезаписанные данные. И чего толку?
Ну, не думайте об операциях языка, думайте о логике программы, Началась програмаа - так и читайте сразу, прямо в сетапе, чего Вы сначала запишете туда (затрёте то, что там было), а потом читаете зачем-то.
А чего Вы хотели? Вы ведь по прежнему не читаете из епрома! Формально Вы читаете, но как? Сначала записываете туда новые значения (строки 22-23) и затираете всё, что там было, а потом тут же (стр. 24-25) читаете свежезаписанные данные. И чего толку?
Поднял чтение из епрома на самый верх, но получилось вот такое.
Простите. я не понимаю что и куда Вы подняли. Хотите нормальной работы, выкладывайте скетч. Вы место на сервере экономите?
Ничего не понимаю. Вы сами понимаете, что Вы делаете? Вот для чего Вы читаете? Что пишете?
Если я правильно понимаю, то Вы записываете туда значение переменной money? Так? И при это Вы хотите, чтобы при старте программы после перезагрузки у Вас переменные money money_old (обе) были равны тому. что в последний раз записалось, а не 0.
Всё правильно?
Ну так и делайте именно это, чего Вы мудрите-то?
1. Строки 2, 3, 20-27 выбрасываете нафиг.
После строки 16 вставляеете строку чтения money и присваивания money_old
Вместо строк 20-27 вставляете запись Вашей money в EEPROM
Вот и всё, если я правильно понял чего Вы хотите.
Сейчас там у Вас (в епроме) может быть всё, что угодно, поэтому при первом запуске EEPROM.get(1, money); Дождитесь, чтобы что-нибудь записалось, а потом можете раскомментировать и перезапускать - увидите, что считалось ровно то, что записалось.
Спасибо. Разобрался.
Не за что. Видите, всё проще, чем Вам казалось.