Для коптера заказывал ультразвуковой дальномер (вот такой, DYP-ME007 v2). Взял про запас три штучки, парочку собираюсь на тележку повесить чтоб в препятствия не врезалась. Раньше с такими девайсами дела не имел, так что разбираюсь вот что куда совать.
Оказалось что надо задействовать только два сигнальных пина (помимо обычных GND и Vcc) - Trig и Echo. Нашёл примерный кусок кода, попробовал - пашет.
Устроил полигон на коленке. Дальномер приделал к сервочке. Сервочка крутится туды-сюды, дальномер постоянно дальномерит. В итоге получаем примерную карту окрестностей (на 180 градусов, ибо серва у меня дальше не крутит). С ардуины данные (текущий угол и намеряное расстояние) уходят на комп в браузер, там скриптик рисует диаграмку на Canvas. Вроде даже похоже на правду. Бывают левые всплески но нечасто. Вообще дальномер довольно стабильно дальномерит - показания практически не плавают (оно и понятно - не к аналоговому входу подключён). Кстати, насколько я заметил - глюкает когда бьёт вскользь по стеклу. Слева одиночные лучи появляются иногда - там как раз дверь стеклянная.
void loop() { // The DYP-ME007 pings on the low-high flank... digitalWrite(dypOutputPin, LOW); delayMicroseconds(2); digitalWrite(dypOutputPin, HIGH); delayMicroseconds(10); digitalWrite(dypOutputPin, LOW); // the distance is proportional to the time interval // between HIGH and LOW distance = pulseIn(dypInputPin, HIGH); cm= distance/58; Serial.println(cm); } [/code]