Я новичок в AVR, но я запрограммировал ТОС раньше, только на этот раз я делаю все, что в Linux тоже, так что вы догадаетесь, что я использую AVRDUDE ...Простой АРН программа ведет себя странно «иногда»
Моя цель для этого проекта - изменить цвет биколорного светодиода в зависимости от определенного состояния.
По умолчанию светодиод RED (если вы правильно делаете соединения), то я хочу, чтобы он переместился на желтый (что является быстрым изменением между зеленым и красным), когда пользователь удерживает кнопку вниз, то при выпуске он будет гореть зеленым, а затем в следующий раз он отключится.
Таким образом, чтобы резюмировать,
СИД красный
В то время как я держать кнопку вниз его Ассоль быть желтый
Когда я релиз будет зеленый
Пока я снова держу кнопку, он будет желтый
Когда я релиз будет от
В то время как я удерживать кнопку еще раз, что это собиралось быть желтый
Когда я релиз будет красный (и так далее .. .)
В моем фактическом коде все работает очень хорошо иногда, но иногда светодиод застревает на желтом, и я не знаю, почему
Любые идеи?
Код на ideone: http://ideone.com/LI9gH
Благодаря
Спасибо, это очень поучительно. Итак, если я понял правильно, вы говорите, что я должен сделать еще одну проверку кнопки как-то во время желтого состояния? ох и спасибо за замечание о моей желтой миксе, вы на самом деле правы :) –
Я предлагаю вам прекратить проверку самого перехода (lecture1! = lecture2) и вместо этого проверить, чтобы кнопка стабилизировалась в новом состоянии, нажималось ли это или не (информация, которую вы уже имели в allumerAmbre). Кроме того, найдите хорошую статью о [debouncing] (http://electronics.stackexchange.com/questions/6884/debouncing-buttons). –
спасибо @Yann, я думаю, что получил свою проблему со всеми вашими предложениями! Я полностью переписал часть, где он проверил переход, и заменил его на некоторое время(); и, похоже, он работает как шарм! Я отправлю обратно в случае, если у меня возникнут проблемы, но я думаю, что это хорошо, спасибо еще раз :) –