Был готовый скетч. Все примитивно и все работало. Сегодня компилирую, заливаю, не работает. Пытаюсь разобраться. Если дополнительно вывожу переменную в ком порт, то все работает. Убираю сериалпринт и все. Такое ощущение, что переменная обнуляется, если ее не выводить в порт. Отладчика в ардуино нет, проверить догадку не могу.
Между прошлым разом и сегодня я установил ардуино 2.0.4 поверх 1.8.5.
Подумал, что дело в этом. Удалил все. Удалил остатки в програмфалес и документах. После этого установил 1.8.5 заново. Не помогло.
Код примитивный, я сейчас в атмелстудио перепишу. Но очень хочется понять в чем дело.
Это глупость - считать что в атмелстудии код заведомо лучше, чем в ардуино. Когда человек не умеет программировать - у него и в атмелстудии получится полный треш.
“Сериалпринт” - это задержка. Нередко “железо” реагирует на такие задержки. Поставьте вместо Seria.print() - delay() и попробуйте.
Ну а вообще - есть еще оптимизатор, который вычищает неиспользуемые переменные. Отправка переменной на печать - это ее использование.
А еще переменную может обнулять выход за границы массива. А использование “сериалпринт” приводит к тому, что теперь обнуляется другая переменная, которую Вы еще не заметили.
Вариантов - масса.
Бесит меня эта среда разработки отсутствием отладчика. Откопал старый ноутбук, поставил на него ардуино 1.8.5. Скомпилировал - работает. Что-то где-то оптимизируется.
Если бы я знал где сфоткать, я бы непременно сфоткал. Но там настроек то и нет. Судя по тому, что установленная на “чистую” машину ардуина работает, где-то я не все удалил.
То есть выкладывать код вы не собираетесь? Тогда нафига приходили?
Спрашивать совета по программированию, не показывая код - издевательство над форумом.
Когда человек уверен, что в проблех с его программой виноваты кто угодно - “китайские” платы, неверная версия ИДЕ, отсутствие отладчика - но только не его код - это диагноз.