Официальный сайт компании Arduino по адресу arduino.cc
Иногда не корректно работает millis
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Добрый день. Мне необходимо чередовать включение двух светодиодов независимо друг от друга и при этом не использовать delay.
Я реализовал это таким образом.
Все работает, но есть нюанс. Иногда при вызове и запуску функции led() светодиоды не сразу начинают включаться/выключаться правильно. Первый светодиод может включиться/выключиться дважды и только потом все начинает работать нормально. Иногда начинается со второго светодиода.
Я уже по разному "игрался" с обнулением led_a_previousMillis = led_a_currentMillis, пытался выносить все currentMillis в глобальные переменные и там устанавливать все previousMillis равными currentMillis, но тогда вообще ничего не работает. Только в таком виде ОК, но не всегда с самого начала.
Пожалуйста, если не сложно, разъясните что не так и может Вы сможете предложить более элегантное решение, т.к. я еще только учусь и очень многое мне не понятно.
Вот код:
Похоже intehno запретили использовать классы и цифровой автомат. В общем inteno работает некорректно
Согласен. Я это не умею. Можете ткнуть носом в пример?
http://arduino.ru/forum/programmirovanie/klassy-arduino-po-qwone-dlya-ch...
Спасибо. Я именно эту тему сейчас уже и читал. А еще:
http://arduino.ru/forum/programmirovanie/tsifrovye-avtomaty-v-klassakh-p...
Добрый день. Мне необходимо чередовать включение двух светодиодов независимо друг от друга и при этом не использовать delay.
...
Первый светодиод может включиться/выключиться дважды и только потом все начинает работать нормально. Иногда начинается со второго светодиода.
Опишите словами, как конкретно должны включаться светодиоды. Просто каждый со своим интервалом и скважностью?
Если вы говорите он некой несинхронности работы светодиодов, то так и должно быть. Из-за неравномерной загрузки процессора реакция всегда запаздывает. Но этим болеют все современные компьютеры.
тоись, TTimerList тебе использовать запретили уже?
тоись, TTimerList тебе использовать запретили уже?
Ни в коем случае. Просто я, наверное, слишком туп, что бы применить его в конкретном случае. Я научился вызывать с его помощью необходимые мне функции, останавливать их и запускать вновь. Также мне очень это помогает во время отладки. На свободный THandle "вешаю" debug в serail и могу кнопкой остановить и запустить его по необходимости. Очень здорово.
Но вот как с помощью TTimerList реализовать, казалось бы, такую простейшую задачу, понять не могу.
Я либо очень узко мыслю или.... даже не знаю.
А надо то чо? Поточнее
Добрый день. Мне необходимо чередовать включение двух светодиодов независимо друг от друга и при этом не использовать delay.
...
Первый светодиод может включиться/выключиться дважды и только потом все начинает работать нормально. Иногда начинается со второго светодиода.
Опишите словами, как конкретно должны включаться светодиоды. Просто каждый со своим интервалом и скважностью?
1-й включается на 500 мс и гаснет
Пауза 300 мс
2-й включается на 500 мс и гаснет
Пауза 300 мс
.... и так по кругу, пока не остановлю. И разумеется без delay. )
1-й включается на 500 мс и гаснет
Пауза 300 мс
2-й включается на 500 мс и гаснет
Пауза 300 мс
.... и так по кругу, пока не остановлю. И разумеется без delay. )
Остановишь чем? Оба сразу или каждый по отдельности?
каоче, без остановки пока
мигають вразнобой 500/300 мс.
1-й включается на 500 мс и гаснет
Пауза 300 мс
2-й включается на 500 мс и гаснет
Пауза 300 мс
.... и так по кругу, пока не остановлю. И разумеется без delay. )
Остановишь чем? Оба сразу или каждый по отдельности?
Да, сразу оба. Например, булевой переменной
ну я там код выклал. Остановить:
TimerList.Stop(hLed1);
TimerList.Stop(hLed2);
запустить снова
TimerList.Reset(хэндл) - запускает интервал сначала, не с того места где остановились
а если
TimerList.Start(хэндл) то продолжить с того места, где остановились
ну я там код выклал. Остановить:
TimerList.Stop(hLed1);
TimerList.Stop(hLed2);
запустить снова
TimerList.Reset(хэндл) - запускает интервал сначала, не с того места где остановились
а если
TimerList.Start(хэндл) то продолжить с того места, где остановились
Огромное спасибо. Я разобрался.
И отдельная благодарность всем не равнодушным людям. Программирование микроконтроллеров действительно интересная штука, но чем больше в это углубляешься, тем больше понимаешь, что ничего не понимаешь. )))
Огромное спасибо. Я разобрался.
Ну, мошт, нальёшь при случае.
И отдельная благодарность всем не равнодушным людям. Программирование микроконтроллеров действительно интересная штука, но чем больше в это углубляешься, тем больше понимаешь, что ничего не понимаешь. )))
все отлично. только в будущем не называйте темы "некорректно работает миллис" или "ошибается цикл for" и тому подобное, а то смешно делается. "Некорректно работает" и "ошибается" обычно программист, миллис и for ведут себя аккуратнее :)
И еще послание для совсем нубов, только начинающих что-то пробовать. Я сам таким был еще некоторое время назад, но по чуть-чуть глаза начинают открываться. Смотрю, бывает, на просьбы о помощи и уже замечаю откровенные глупые ошибки. Я понимаю, что еще по сути в 1-м классе, если это можно сравнить со школой и до окончания "школы программистов" мне еще очень далеко, но это действительно круто, когда ты железку заставляешь работать так, как планировал.
И отдельная благодарность всем не равнодушным людям. Программирование микроконтроллеров действительно интересная штука, но чем больше в это углубляешься, тем больше понимаешь, что ничего не понимаешь. )))
все отлично. только в будущем не называйте темы "некорректно работает миллис" или "ошибается цикл for" и тому подобное, а то смешно делается. "Некорректно работает" и "ошибается" обычно программист, миллис и for ведут себя аккуратнее :)
Согласен, учусь
Огромное спасибо. Я разобрался.
Ну, мошт, нальёшь при случае.
Всегда за
в будущем не называйте темы "некорректно работает миллис" или "ошибается цикл for" и тому подобное
у гуру это вызывает смех, а у новичков - панику. :)
все отлично. только в будущем не называйте темы "некорректно работает миллис" или "ошибается цикл for" и тому подобное, а то смешно делается. "Некорректно работает" и "ошибается" обычно программист, миллис и for ведут себя аккуратнее :)
ты ещё в богов ему запрети верить - он обитает во вселенной одушевлённых сущностей, где миллис и цикл фор обладают свободой воли.
все отлично. только в будущем не называйте темы "некорректно работает миллис" или "ошибается цикл for" и тому подобное, а то смешно делается. "Некорректно работает" и "ошибается" обычно программист, миллис и for ведут себя аккуратнее :)
ты ещё в богов ему запрети верить - он обитает во вселенной одушевлённых сущностей, где миллис и цикл фор обладают свободой воли.
Еще, у них часто while неправильно работает, а if вапще ахинею несет, прямо в массы.