Как использовать как ультразвуковой, так и ИК-датчик и ультразвуковой датчик с Arduino

Я хочу использовать как ультразвуковой датчик, так и ИК-датчик с Arduino + motors для автомобильного проекта. Придется ли мне делать какую-либо многопоточность на Arduino, или это что-то другое

, 👍1

Обсуждение

Многопоточность не нужна; это что-то другое. Вы можете быть более конкретны в своем вопросе, объяснить, что вы хотите сделать и что вы уже пробовали. В таком виде вы не получите никаких полезных ответов., @ocrdu


2 ответа


0

Ардуино не занимаются многопоточностью. Есть ряд попыток реализовать такие вещи, но это пустая трата времени и ресурсов.

Вместо этого вам нужно привыкнуть к двум вещам:

  1. Напишите неблокирующий код
  2. По возможности используйте внутреннюю аппаратную периферию

Двигатели, использующие аппаратный PWM, очень похожи на "запуск и забывание" - включите их, и вы сможете забыть о них до тех пор, пока не захотите изменить их скорость или направление.

Ультразвуковые датчики можно сделать как более точными, так и более "фоновыми" с помощью периферийного устройства захвата ввода Arduino.

ИК - датчики (я предполагаю, что вы имеете в виду датчики приближения) обычно похожи на кнопку или потенциометр-вы просто читаете их, когда хотите знать, что он делает.

Ваша задача-научиться объединять все это в единую программу, которая реагирует на входные данные так, как вы хотите, и правильно управляет двигателями.

,

1

Хотя к Arduino вполне возможно подключить два или более датчиков, как только вы заговорили о многопоточности, вам нужно подумать о поддержке RTOS. Вы можете добиться параллельной обработки, создав 2 разные задачи с помощью xTaskCreate во FreeRTOS. Новейшая поддержка разработки в Arduino позволяет создавать такие задачи.

https://github.com/feilipu/Arduino_FreeRTOS_Library

Хотя концепции RTOS обширны, вы можете быстро начать работу с библиотекой Arduino FreeRTOS и проверить, соответствует ли она вашим требованиям. Раньше я делал такой проект для obstable avoider bot и сталкивался с множеством проблем, если не было параллельной обработки. Я уверен, что вы сможете добиться гораздо лучших результатов при многопоточности.

Что касается датчика, убедитесь, что ультразвуковой датчик выдает надежные данные для всех показаний, и не используйте ИК-датчик при солнечном свете, иначе он даст неверные результаты. Всего наилучшего вашему проекту!

,