Помогите со скетчом
- Войдите на сайт для отправки комментариев
Пнд, 05/09/2022 - 15:06
Здравствуйте форумчане. Помогите пожалуйста разобраться со скетчом, никак не пойму что идет не так?! глаза уже болят!!!! Делаю 1 раз что то идет не так....
суть проблемы:
программа должна реагировать на нажатие Pin1, pin2 GHB, прибавлением +5 к счетчику и записать значение в память, при аварийном отключении возобновить работу с последнего значения, а она обнуляется после перезагрузки... помогите!!!
Помогите пожалуйста разобраться со скетчом, никак не пойму что идет не так?! глаза уже болят!!!!
чтобы и у тех, кто вам будет помогать, тоже глаза не заболели - первым делом вставьте код по правилам форума, оформив его соответвующим тегом
1. Вычитывать значение переменных нужно в блоке setup() один раз при включении, а дальше уже работать с полученными значениями
2. Зачем в бесконечном цикле (функции loop() - почитайте перевод этого слова) еще один бесконечный цикл? "Утка в яйце, кощей на игле!" ))))))
3. Если использовать такие большие делеи (аж в одну секунду) - ни к чему хорошему это не приведет. Зачем "оно"?
4. В строке № ХЗ (вставьте код по правилам форума) вместо значения переменной "ves" вы записываете в энергонезависимую память НОЛЬ
Пока это все, что "в глаза бросилось"...
Пока это все, что "в глаза бросилось"...
"на третий день глаз станет потихоньку открываться" )))
А чего тебе в глаза не бросилось, что под переменные типа int в eeprom выделено аж по цельному байту ?
Так на то оно и «первое что в глаза бросилось», я не вчитывался... ))))
У меня первое что бросилось "со скетчом"... И уже всё. Нах-нах.)
У меня первое что бросилось "со скетчом"... И уже всё. Нах-нах.)
Ну да, но я на это глаза закрыл )))) Безграмотных во времена егэ пруд пруди...(
Ну а о чём можно говорить, когда без грамматических ошибок написать название темы не могут, когда исходный текст вставить не могут... Ну это же полный ЕГЭ!( "И польный писюнь вода.")
Спасибо, что подсказываете, я не специалист в программировании. Все равно после 2-3 отключений на 0 скидывается, что я делаю не так?
А не должно было получиться... Второе записываемое в EEPROM число сейчас всегда портит первое. У Вас каждое записываемое значение имеет тип int (2 байта). Второе число надо не в адрес 1, а в адрес 2 писать.
Отчего то, все любят использовать EEPROM.h, тогда как для многих случаев есть "штатные" и более удобные средства в рамках avr-libc. Очевидно, по незнанию.( В eeprom libc не нужно следить за адресацией, EEMEM об этом заботится. Ну и типы данных явно указываются при обращении к функциям eeprom. А это уменьшает кол-во ошибок, подобных этой.
Считаю, что, коль Ардуино автоматом использует libc, то и разработчикам как то нужно было бы акцентировать на её (libc) функциях.
UPD. А то получается функционал libc то мы используем (автоматом), а вот откуда оно берётся - ХЗ. Непорядок.)
А не должно было получиться... Второе записываемое в EEPROM число сейчас всегда портит первое. У Вас каждое записываемое значение имеет тип int (2 байта). Второе число надо не в адрес 1, а в адрес 2 писать.
Спасибо, исправил