Временные участки в коде
- Войдите на сайт для отправки комментариев
Здраствуйте, хотелось бы узнать как опытные программисты организуют разные временные задержки в участках кода. Постараюсь описать ситуацию: есть тележка на рельсах. Дистанция от края до края метров 30. На тележке установлены 2 датчика металла. При подъежанию к краю рельс, один из сенсоров касается металла, тележка останавливается, ждет 4 секунды и едет к др краю рельс, и так бесконечно. Также на тележке есть съемник, который опускается через равные промежутки времени. При этом надо моргать светодиодами и отслеживать контур безопасности и другие мелочи. Вот мне и интересно, как организовываются такие временные интервалы. Так как delay() и прочия подобные трюки тут не сработают, ведь все время нужен контроль за другими частями программы.
Была так же идея ставить переменные в требуемые участки задержки и при каждом проходе главного цикла их инкрементировать, а при совпадении с указаным значением что то выполнять. Но в тут свои грабли - точность времени ну совсем никакая, все будет зависить от длины кода программы.
Идеологически верно использовать функцию millis()
Идеологически верно использовать функцию millis()
Ну впринципе то да, но millis не бесконечен
Почитайте.
ЗЫ. А ещё, вверху страницы есть поисковое поле, где по слову millis можно дохрена чего почитать.
Почитайте.
ЗЫ. А ещё, вверху страницы есть поисковое поле, где по слову millis можно дохрена чего почитать.
Благодарю за информацию
Еще одна фраза и последуете за Джордано Бруно. Здесь жестоко расправляются с еретиками из секты "Конечного Миллиса".))))
А что в этом мире бесконечно? Вроде Эйнштейну приписывают фразу: «Только две вещи бесконечны - Вселенная и человеческая глупость, хотя насчёт Вселенной я не уверен».
Не надо путать код и то что код делает. Это совершенно разные понятия. Вот к примеру программист пишет программы, но кроме этого он ест, срет и спит. И вот что удивительно, что без трех последних действий он долго писать программы не сможет.Хотя многим и хотелось бы.
Ну зачем сразу так близко к сердцу принимать? Ну ошибся я в доводах насчет millis(). Не все же рождаются программистами. Да и про код я думаю саму суть уловили, а переворачиваете все с ног на голову. Просто в программе есть критичные ко времени участки кода (контур безопасности к примеру) и неочень (моргание светодиодов, опрос кнопок), поэтому и попросил советов. Надеюсь к вашим детям с чужой стороны такого отношения небудет.
semaawp. Я же тоже не программист, да и сейчас не работаю программистом. Просто когда люди садятся писать программы, они буквально не хотят проектировать программы перед тем как писать код. Заведите переменную state - 0 стоят в одном конце 1 ехать в другой конец,3 стоять в другом конце и 4 ехать обратно. И потом переключайте эти состояния по времени или по условию. И у вас не будут задержки в коде, а будут задержки в реализации.
semaawp. Я же тоже не программист, да и сейчас не работаю программистом. Просто когда люди садятся писать программы, они буквально не хотят проектировать программы перед тем как писать код. Заведите переменную state - 0 стоят в одном конце 1 ехать в другой конец,3 стоять в другом конце и 4 ехать обратно. И потом переключайте эти состояния по времени или по условию. И у вас не будут задержки в коде, а будут задержки в реализации.
Я вас понял, получается мне лучше все разбить все на подзадачи и выполнять их отдельно. Например пока возмем только тележку. Как вы и сказали у нее есть несколько состояний, то есть 4. Это движение вперед, движение назад, конечное положение тележки и начальное, плюс 5ое состояние - неопределенное. То есть когда только подали питание на контроллер. Соответствеено переходя из одного состоЯние в другое я выполняю поставленную задачу, вы это сказать хотите?
Ну да. Вы же не остаетесь на работе, когда предприятие закрывается, а идете домой. Что бы утром продолжить работу. Так и процессору незачем висеть в одном и том же месте, ждать пока надо сделать следующий код.
Вот тут пример как я пишу подобные задачи. http://arduino.ru/forum/programmirovanie/pomogite-novichku-ochen-prostoi-proekt-muchayus-3-dnya#comment-325365
А вот тут про состояния. #38
Подобную задачу я реализовал бы с помощью библотеки timerOne кажется так она называлась.
Она позволяет организовать псевдомногозадпчность.
В подпроцессах с заданными промежутками можно менять флаги, а главный цикл исполняет заданное ими. Это несколько перекликается с предложеныом уважаемым qwone.
Ну да. Вы же не остаетесь на работе, когда предприятие закрывается, а идете домой. Что бы утром продолжить работу. Так и процессору незачем висеть в одном и том же месте, ждать пока надо сделать следующий код.
Вот тут пример как я пишу подобные задачи. http://arduino.ru/forum/programmirovanie/pomogite-novichku-ochen-prostoi-proekt-muchayus-3-dnya#comment-325365
А вот тут про состояния. #38
Спасибо, это как раз то что мне нужно, общую концепцию я понял, еще раз благодарю :)