Delay() и опрос датчика - есть какая-то многопоточность?
- Войдите на сайт для отправки комментариев
День добрый,
вопрос, наверное, больше о философии железяки, нежели о программировании. А как у микроконтроллеров с мультипоточностью? Ну, например, есть у меня примитивнейший проектик: LED-лента и датчик движения.
1. Датчик засекает движение и контроллер врубает свет.
2. Контроллер делает паузу (например - минутную) и вырубает свет.
.......... пока всё понятно, да? ...........
2а. Контроллер свет гасит плавно, секунд за 6-8, в это время в зоне видимости датчика что-то происходит. Или движение было во время паузы между включением и выключением... В идеале нужно, чтобы при движении контроллер опять врубил свет по максимуму и перезавёл таймер.
Как ардуина работает? Могу ли я (насколько вижу - не могу!) прописать что-то для датчика; датчик сработал - меняется, например, переменная, которая потом переодически опрашивается программой? Или надо всё же delay (пауза между включением и выключением и микропаузы при плавном уменьшении свечения диодов) рвать, вклинивая туда опросы датчика?
Спасибо заранее.
Examples->BlinkWithoutDelay
День сурка?
Эта тема всплывает на форуме какждый раз, как к нам присоединяется новичёк. Поиск в правом верхнем углу. Да и ссылку Вам тут правильную уже дали.
Могу ли я ....
Этого кроме Вас никто не знает. Одни люди могут, другие не могут, но быстро учатся, а третьи не могут генетически, от слова "никогда". А можете ли Вы ... время покажет :)
хм.... именно насчёт многопоточности хотелось уточнить, а не "как сделать" узнать. Так вышло - я сам программист, вот и хотелось узнать насчёт возможностей и ограничений платформы.
хм.... именно насчёт многопоточности хотелось уточнить, а не "как сделать" узнать. Так вышло - я сам программист, вот и хотелось узнать насчёт возможностей и ограничений платформы.
ну, запускаешь все четыре ядра - делов-то.
Dimanoss, настоящей многопоточности нет. Но можно реализовать некую псевдомногопоточность. Про поиск Вам уже сказали, эта тема поднималась не раз и не два. Можете ещё почитать книжки по микроконтроллерам AVR.
Про delay() забудьте, используйте millis() как в примере BlinkWithoutDelay.
я сам программист, вот и хотелось узнать ...
Ну, тогда всё проще. Вы, к сожалению. не написали что у Вас за ардуино, поэтому сделам так: вот здесь есть полная документация по всем контроллерам. Выбираете свой, кликаете и смотрите. Например, если у Вас UNO/Nano и подобное, то вот прямая ссылка на полное описание.
Если Вы программист, то больше Вам ничего не нужно.
А еще есть портированый на ардуино FreeRTOS. Пищу от восторга. Очень много на ней построено.