Как использовать как ультразвуковой, так и ИК-датчик и ультразвуковой датчик с Arduino
Я хочу использовать как ультразвуковой датчик, так и ИК-датчик с Arduino + motors для автомобильного проекта. Придется ли мне делать какую-либо многопоточность на Arduino, или это что-то другое
@Amit Nikhade, 👍1
Обсуждение2 ответа
Ардуино не занимаются многопоточностью. Есть ряд попыток реализовать такие вещи, но это пустая трата времени и ресурсов.
Вместо этого вам нужно привыкнуть к двум вещам:
- Напишите неблокирующий код
- По возможности используйте внутреннюю аппаратную периферию
Двигатели, использующие аппаратный PWM, очень похожи на "запуск и забывание" - включите их, и вы сможете забыть о них до тех пор, пока не захотите изменить их скорость или направление.
Ультразвуковые датчики можно сделать как более точными, так и более "фоновыми" с помощью периферийного устройства захвата ввода Arduino.
ИК - датчики (я предполагаю, что вы имеете в виду датчики приближения) обычно похожи на кнопку или потенциометр-вы просто читаете их, когда хотите знать, что он делает.
Ваша задача-научиться объединять все это в единую программу, которая реагирует на входные данные так, как вы хотите, и правильно управляет двигателями.
Хотя к Arduino вполне возможно подключить два или более датчиков, как только вы заговорили о многопоточности, вам нужно подумать о поддержке RTOS. Вы можете добиться параллельной обработки, создав 2 разные задачи с помощью xTaskCreate во FreeRTOS. Новейшая поддержка разработки в Arduino позволяет создавать такие задачи.
https://github.com/feilipu/Arduino_FreeRTOS_Library
Хотя концепции RTOS обширны, вы можете быстро начать работу с библиотекой Arduino FreeRTOS и проверить, соответствует ли она вашим требованиям. Раньше я делал такой проект для obstable avoider bot и сталкивался с множеством проблем, если не было параллельной обработки. Я уверен, что вы сможете добиться гораздо лучших результатов при многопоточности.
Что касается датчика, убедитесь, что ультразвуковой датчик выдает надежные данные для всех показаний, и не используйте ИК-датчик при солнечном свете, иначе он даст неверные результаты. Всего наилучшего вашему проекту!
- Как создать несколько запущенных потоков?
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
- Как получить данные о весе с датчиков стеклянных электронных весов для ванной?
- Как подключить более 10 датчиков к Arduino uno r3
- Как использовать два ультразвуковых датчика для управления двигателем 5 Вольт?
- Чтение датчика давления от 4 до 20 мА с использованием uno
Многопоточность не нужна; это что-то другое. Вы можете быть более конкретны в своем вопросе, объяснить, что вы хотите сделать и что вы уже пробовали. В таком виде вы не получите никаких полезных ответов., @ocrdu