Ультразвуковой дальномер HC-SR04
2015-11-24
Всі статті →Автор Андрей Чепурко [email protected]
Здравствуйте, дорогие читатели. Сегодня мы поговорим о подключении ультразвукового дальномера HC-SR04 к нашей Ардуино. Думаю, это будет довольно таки интересно, так как данный дальномер очень часто используется в Ардуино — проектах из-за своей простоты в использовании и маленькой стоимости. Итак, преступим же!
Принцип работы дальномера очень прост: из одного “глазика” посылаются 8 импульсов частотой 40 КГц, отражаются от препятствия и принимаются во второй “глазик”. Дистанция получается по следующей формуле:
Ширина импульса ( в микросекундах ) / 58 = Дистанция ( в сантиметрах )
Основные характеристики:
- Рабочее напряжение: 3.8 — 5.5 В
- Потребляемый ток: 8 мА
- Частота: 40 КГц
- Максимальная дистанция измерения: 4 м
- Угол: 15º
- Размеры: 37x20x15 мм
Теперь возьмем все необходимое для подключения дальномера к плате:
Вот и все!
Собираем все по нижеприведенной схеме:
Теперь будем писать скетч для нашего дальномера:
Вот скетч:
На данный момент все, надеюсь, у вас все получилось с первого раза!
Удачи!
Дякуємо Вам за звернення! Ваш відгук з’явиться після модерації адміністратором.
Тима11.02.2020 15:45:53
не работает, я Павел Сергеевич Гусевик ручаюсь, я никогда ещё не видел сайта хуже
Бот оцінок04.04.2019 14:24:17
Можна було пояснити що і як робиться. А ви тут просто написали що яка команда(функція) робить у цій програмі. І розрахунки можна було детальніше пояснити.Штучний інтелект «Бот оцінок» розроблений 1.03.2019.Власник — АнонімПрограміст — Анонім(він не тільки коментарії писати може)
Xxx19.01.2019 10:30:51
Не работает!
Slava26.12.2018 02:02:22
В статті echo i trig підключаються на 4 і 2 піни. А в скетчі на 9 і 8. Також було б добре якби ви написали що дані виводяться в Serial monitor(Arduino IDE (Arduino 1.8.5: Tools > Serial Monitor) Стаття для абсолютних початківців все такиДякую автору, мені була корисна
А05.08.2018 13:04:05
Владимир, на Serial Monitor в Arduino IDE (Arduino 1.8.5: Tools > Serial Monitor) при подключении Arduino Leonardo по USB к компу
БОДЯ25.04.2018 18:20:43
я
Владимир20.04.2018 16:38:22
Здравствуйте.А куда выводятся показания????
Инфракрасный дальномер GP2Y0A02YK0F | 2 Схемы
Самым распространенным датчиком для измерения расстояния в диапазоне от десятков сантиметров до единиц метров для Arduino проектов является ультразвуковой локатор HC-SR04. Однако, этот вариант не является единственным. Альтернативой ультразвуковому локатору может служить инфракрасный дальномер SHARP GP2Y0A02YK0F. Данный локатор может измерять расстояние в диапазоне от 20 до 150 см. В частности примеры работы с подобными устройствами можно найти в классической книге [1] или в [2-3]. Данное устройство приобретено на aliexpress.ru всего за 4 доллара.
Датчик поставляется в антистатическом пакете
Датчик имеет пластмассовый корпус с габаритами 45 х 22 х 18 мм, масса 5 г без кабеля.
На корпусе имеются два крепежных отверстия, диаметром 3 мм с межцентровым расстоянием 37 мм.
Вместе с датчиком поставляют соединительный кабель длиной 190 мм.
- В кабеле красный провод – питание 5 В,
- черный – общий,
- желтый – сигнальный.
Ток, потребляемый устройством 33 мА [4-5], согласно измерениям автора обзора, ток потребления составил 26 мА.
Дальномер имеет нелинейную зависимость между измеренным расстоянием и напряжением на информационном выходе. График зависимости напряжения на информационном выходе (желтый провод) от расстояния, согласно данным производителя.
Как видно, напряжение питания и диапазон изменения напряжения на информационном выходе позволяют без проблем подключить данное устройство к Arduino. Для работы с этим дальномером энтузиастами уже написаны демонстрационные программы, например [4]. Данная программа рассчитывает расстояние до препятствия в сантиметрах и передает результаты расчета по последовательному порту.
В целом первое впечатление о данном датчике положительное, в рамках заявленного диапазона расстояний датчик работает, на яркие источники света (светодиодная лампа) аномальной реакции замечено не было. К недостаткам, по сравнению с ультразвуковым локатором HC-SR04, можно отнести более высокую стоимость и меньшую дальность. Так что если радиолюбителя по какой-то причине не устраивает ультразвуковой дальномер вроде HC-SR04, то датчик SHARP GP2Y0A02YK0F может стать альтернативой.
Литература и ссылки
- Блум Д. Изучаем Arduino: инструменты и методы технического волшебства: Пер. с англ. — СПб.: БХВ-Петербург, 2015. — 336 с.
- robocraft.ru/blog/electronics/748.html
- mysku.ru/blog/aliexpress/29357.html
- robocraft.ru/blog/electronics/783.html
- zelectro.cc/SHARP_GP2Y0A02YK0F
Прошивку и даташит на датчик скачайте в архиве. Специально для сайта 2Схемы — Denev.
3.2. Инфракрасный дальномер — Цель обнаружена
Для начала разберемся, как мы можем измерить расстояние. Воспользуемся для этого инфракрасным дальномером. Как он работает? У него есть излучатель, который может отправлять инфракрасный свет. Мы его глазом. соответственно, не видим. Но сам датчик своими приемниками его видит, а приемников у него целая линейка. Они спрятаны за линзой. В зависимости от расстояния до препятствия свет будет отражаться под разным углом. И в зависимости от того, как он упадет на приемники, датчик выдаст разный уровень напряжения. То есть, как вы уже догадались, это обычный аналоговый датчик. Сейчас мы его будем подключать и увидим, что считывать с него сигнал мы уже умеем. У дальномера есть вот такой тройной шлейф, поэтому нам снова будет удобно подключить его к Troyka шилду. Но я еще раз хочу обратить ваше внимание на то, чтобы вы каждый раз убеждались в том, что распиновка соблюдается. Распиновка – то есть назначение каждого из выводов. На модулях, которые мы использовали в прошлый раз, явно подписано, какой контакт за что отвечает. Там были буквы g, v, s. Здесь же на дальномере мы ничего такого не видим, поэтому лучше не полениться и поискать от него документацию, как мы делали раньше. Здесь мы видим, что со стороны дальномера провода промаркированы соответственно: синий отвечает за сигнал, черный – за землю, красный – за питание. А вот с другой стороны эти цвета не совпадают. Как мы видим, синий приходит в сигнальный контакт, а красный и черный поменяны местами. В данном случае ничего страшного нет. Если у вас нет подходящего шлейфа, вы можете его переключить своими руками. Вот здесь есть такие вот пластмассовые зажимчики, которые можно аккуратно отогнуть маленькой отверткой или какой-нибудь иголочкой. Теперь у нас черный провод (земля) с краю, а красный (питание) в центре. И мы можем без опаски подключать дальномер к аналоговым входам на Troyka шилде. Я подключу к A0, и теперь пойдем читать его. Начиная с этого момента, в курсе я буду использовать другую плату Arduino. Точнее, она называется даже не Arduino, но она ее аналог. Это наш российский аналог Arduino Leonardo, который называется Iskra Neo. Мне он по многим причинам нравится больше. Вы вскоре узнаете о некоторых возможностях этих плат, в которых Iskra Neo дает чуть даже больше, чем Arduino Uno. Внешних отличий вы практически не найдете за исключением того, что здесь используется микро USB-разъем. Колодка у нее точно такая же, то есть на нее отлично встают все те же платы расширения, и мы установим Тройку шилд на Искру для того, чтобы приступить к чтению дальномера. Снова пойдем в Образцы. Найдем там наш любимый образец AnalogReadSerial и изменим скорость передачи данных на 115200 бод. Также убедимся, что у нас дальномер подключен к пину, который здесь указан – A0, и загрузим этот скетч. Хочу обратить ваше внимание на то, что теперь я работаю с Искрой, которая в оригинале – Arduino Leonardo, и поэтому в инструментах мне нужно убедиться, что у меня выбрана плата Arduino Leonardo. Если вы работаете с разными платами, не забывайте проверять это. Кроме этого, еще одна особенность Leonardo – в отличие от Uno у нее (а также у Искры) нету второго контроллера, который занимается коммуникацией с компьютером. Поэтому когда вы подключаете Leonardo или Искру, в списке портов вы сначала увидите один порт, а через несколько секунд он изменится на другой. В этом нет ничего страшного. Просто нужно привыкнуть, что нужно несколько секунд терпения. Сейчас я посмотрю, какой порт у меня в конце концов установился здесь – COM15. Отправлю скетч загружаться, а сам запущу в Processing тот пример, с помощью которого я визуализирую данные с платы. Здесь у меня прописан COM15, и скорость передачи данных 115200. И я запускаю визуализатор. Сейчас наш дальномер направлен вверх, и он на самом деле не видит ничего, потому что у каждого датчика есть свои границы, в которых его можно использовать. Данный дальномер имеет диапазон измерений от 10 до 80 см, поэтому потолок, который находится гораздо выше, для него незаметен. Я буду изменять расстояние до него рукой. И мы видим, что когда я начинаю приближать руку ближе чем 10 см, у нас показания снова начинают падать. Это уже не является его рабочей областью. Вот. А рабочий диапазон позволяет получить данные вот в таком диапазоне. Хочу обратить ваше внимание на то, что зависимость напряжения, которое выдает инфракрасный аналоговый дальномер от расстояния, не совсем линейна. Обратите внимание на график, и если вы захотите преобразовать то, что показывает дальномер в какие-то метрические единицы, вам придется использовать довольно хитрую формулу. Ну сейчас для нас это не так важно, мы поняли, что мы получаем различное напряжение в зависимости от дальности до препятствия. Теперь я хочу сделать так, чтобы расстояние до объекта отображалось а каком-то индикаторе, то есть уже не на экране компьютера. Для этого мы возьмем самый обычный светодиод, который будем включать более ярко или менее ярко.
FYS 100.121: Лаборатория 12: Соединение обработки и Arduino
- Научитесь писать простые программы обработки, которые взаимодействуют с вашим Arduin
- Изучите связи между физическим вводом / выводом и графическими выражениями
В предыдущей лабораторной работе мы рассмотрели, как подключать различные датчики к Arduino с помощью Scratch. Хотя Scratch позволяет нам создавать простые программы для Arduino, он ограничен общением только с самим Arduino. Чтобы расширить диапазон возможных взаимодействий с Arduino, мы получим доступ к Arduino прямо из скетча обработки.Это позволит вам включать анимацию, звук и другие визуальные элементы с физическим вводом или выводом.
Часть 0 — Настройка обработки для работы с Arduino
Чтобы разрешить Processing общаться с вашим Arduino, вам понадобится пара вещей: (1) новая библиотека Arduino и скетчи для Processing, (2) новая прошивка, установленная на Arduino.
Загрузка новых библиотек обработки и эскизов
Загрузите библиотеку обработки Arduino (здесь). Разархивируйте архив и поместите его в папку библиотеки в папке Processing Sketchbook.
Чтобы установить наброски на сегодня, откройте папку lab-12Sketches.zip (здесь) и перетащите все содержимое в альбом Processing .
Установка Firmata на Arduino
После того, как вы установили обе библиотеки, вам необходимо установить новую прошивку на ваш Arduino, чтобы он мог взаимодействовать с обработкой. Запустите Arduino со своего рабочего стола. Оказавшись в Arduino, загрузите программное обеспечение Firmata, перейдя в
Подключите ваш Arduino. После того, как вы выбрали программу Firmata, вам необходимо выбрать правильный COM-порт и Board Type для вашей программы. Перейдите в Инструменты-> Порт и выберите «самый большой» COM-порт. Например, если у вас есть COM3 и COM8, выберите COM8. Также вам необходимо выбрать тип платы. Убедитесь, что выбрано «Arduino / Genduino Uno».
После того, как вы сделали эти два выбора, теперь вы готовы к загрузке на свою доску.Нажмите «стрелку вправо»
Теперь ваша программа должна загрузить в Arduino. В случае успеха через несколько секунд вы увидите сообщение ниже:
Часть 1 — Подключение к Arduino
При использовании библиотеки Arduino в процессе обработки вы можете напрямую связываться с Arduino, включая / выключая контакты и запрашивая различные значения. Однако перед выполнением этих действий вы должны сначала установить соединение с Arduino.
Загрузите скетч «Мигающий светодиод» из альбома Processing Sketchbook. Изучите цикл setup () скетча, как показано ниже:
Первая строка Arduino arduino создает объект Arduino, с которым мы поговорим. В следующих строках печатаются различные последовательные порты компьютера. Вы должны выбрать последовательный порт, к которому ваш компьютер действительно подключен. Это может быть сложно, поскольку вывод не читается человеком. В следующих строках печатаются различные последовательные порты компьютера.Вы должны выбрать последовательный порт, к которому ваш компьютер действительно подключен. Код распечатает список доступных последовательных портов в терминале под вашим эскизом. На рисунке ниже показан список портов, доступных на моем Mac. Ваш будет выглядеть иначе.
В общем, вы хотите выбрать «наибольшее» значение порта. В этом случае я бы выбрал порт 1. Как вы можете видеть в приведенном ниже коде, я выбрал порт 3 при более ранней установке. Вы измените значение 3 на любое значение, подходящее для вашего Arduino.
Часть 2 — Мигание светодиода
Чтобы использовать вывод на Arduino, этот вывод должен быть объявлен как ВХОД или ВЫХОД. Входные контакты передают информацию в Arduino. Выводы выводят некоторую информацию. Большинство ваших контактов будут выходными контактами.
На этом скетче будет мигать встроенный светодиод, так же, как вы это делали в Scratch. Для начала нам нужно установить вывод 13, который подключен к светодиоду, как выход. Строка ниже в setup () выполняет эту операцию.
После того, как мы установили вывод 13 как выход, его можно использовать в draw () для мигания светодиода. Изучите приведенный ниже код и обратите внимание на сходство с вашим кодом Scratch. Вместо блоков у нас есть отдельные строки кода.
Часть 3 — Чтение данных
Многие из используемых нами деталей требуют аналогового входа для считывания данных — фотоэлемент, датчик давления и т. Д. Доступ к этой информации очень похож на Обработку. Загрузите эскиз под названием «SimpleAnalogRead» и настройте простую схему для фотоэлемента (таблица данных фотоэлемента) или датчика давления (датчик давления).Если вам нужна помощь, воспользуйтесь Руководством по подключению физических датчиков.
В SimpleAnalogRead цикл настройки должен быть таким же, как и другие. Если последовательный порт указан неверно, измените значение порта, как вы делали в начале лабораторной работы.
Изучите цикл draw () , показанный ниже. Этот код считывает значение из аналогового входа 0 и сохраняет это значение в переменной с именем
Эквивалентная версия этого кода для Scratch выглядела бы на рис. 6. Вместо использования одного блока для чтения в датчике и его назначения мы используем один оператор в Processing.
После считывания значения Arduino может распечатать это значение и отобразить его в консоли. Код также включает небольшую задержку, чтобы гарантировать, что мы не получим стену текста в консоли. Инструкция println означает «Строка печати» и распечатывает различные переменные в консоли.
При запуске вы должны увидеть выходные данные, аналогичные приведенным ниже значениям, которые показывают данные, поступающие через Arduino в консоль.
Часть 4 — Управление сервоприводом
В Scratch мы использовали специальные моторные блоки для управления сервоприводом. В процессе обработки мы будем писать сервоприводу напрямую, чтобы управлять его работой. В общем, отправка значения 0 сервоприводу заставит его двигаться против часовой стрелки, а отправка значения 180 заставит его двигаться по часовой стрелке.Значение в середине заставит его остановиться. В настоящее время я использовал 92 для остановки сервопривода.
Загрузите эскиз под названием «Сервопривод» и изучите цикл draw () . Цикл setup () должен быть таким же, как и предыдущие скетчи.
Прямо над петлей draw () я использовал переменную, чтобы удерживать штифт, к которому подключен сервопривод. Технически мы можем использовать цифровой вывод на Arduino, однако я ограничил его выводом 3, который также работал в Scratch.
Установив штифт, мы можем теперь заставить двигатель вращаться в разных направлениях, а затем остановиться. Обратите внимание на разные значения, которые используются для того, чтобы двигатель вращался в разных направлениях. Попробуйте другое значение, чтобы получить разные результаты.
Попробуйте это:
- Измените значения сервопривода от 0 до 180, чтобы увидеть различное поведение
Часть 5 — Подключение обработки и Arduino
Дальномер
Теперь, когда вы познакомились с работой с Arduino в процессе обработки, пришло время их соединить.Загрузите эскиз под названием RangeFinder и подключите дальномер к Arduino. Если вам нужна помощь, воспользуйтесь Руководством по подключению физических датчиков и Техническим описанием ультразвукового дальномера.
Цикл setup () должен быть таким же, как и раньше, но цикл draw () отличается. В этом цикле мы начинаем смешивать инструкции Arduino и Processing. Как и раньше, мы считываем значение с датчика, но затем используем это значение для создания простой анимации.
На рисунке выше показан код, который считывает результат дальномера в переменную с именем «значение», а затем преобразует это значение в другую переменную с именем «дюймы».Новая переменная — это фактическое расстояние, измеренное дальномером. Используя это расстояние, на экране рисуется эллипс, а расстояние печатается под ним (код не показан).
Чего стоит попробовать:
- Используйте разные цвета заливки в эскизе
- Наведите дальномер на разные объекты и посмотрите, насколько он «шумный».
RGB светодиод
Используя макетную плату и светодиод RGB, подключите светодиод к следующим контактам:
- Красный к контакту 3 Arduino
- Зеленый к контакту 5 Arduino
- Синий к контакту 6 Arduino
- подключите длинный вывод светодиода к земле.
Дополнительные сведения см. В руководстве по подключению физических датчиков и справочнике по светодиодам RGB.
После завершения подключения загрузите скетч под названием «RGB_LED». В этом скетче используется много выходных контактов, поэтому в цикле setup () есть много объявлений выходов. В качестве сокращения я сделал переменные, которые содержат номер контакта для каждой:
Изучите код в функции draw () , показанной ниже. Этот код устанавливает значение для каждого цвета светодиода.Как и в Scratch, мы используем функцию аналоговой записи, чтобы установить яркость светодиода. Перейдите к и попробуйте вручную создать различные значения и цвета.
Попробуйте это:
- Попробуйте разные цветовые комбинации со светодиодами. Какой ваш любимый цвет?
Часть 6 — Подключение процессора и Arduino — светодиод и мышь
В предыдущем скетче мы обнаружили, что можно вручную управлять цветом светодиода. Это интересно, но каждый раз выбирать новый цвет довольно скучно.Загрузите эскиз под названием «ColorWheel».
В этом эскизе обработка будет отображать цветовое колесо, которое предоставляет все варианты цветов RGB. Установите светодиод на Arduino и посмотрите, что происходит, когда вы нажимаете определенный цвет. Вы должны заметить, что ваш светодиод становится цветом, который вы нажимали на экране.
Processing фиксирует ваш щелчок мыши, а затем определяет, какой цвет вы выбрали. Изучите функцию mouseMoved, чтобы увидеть, как это работает. Обработка сначала захватывает ваш щелчок мышью, находя значения mouseX и mouseY, и захватывает цвет этого пикселя.Затем он разбивает пиксель на разные значения цвета.
После выделения каждого цвета эти отдельные цвета отправляются на светодиод. Значения синего и зеленого немного уменьшены, так как они очень яркие и перекрывают красный цвет.
Попробуйте это:
- Измените функцию с mouseClicked () на mouseMoved () и посмотрите, как изменится поведение вашего эскиза
Часть 7 — Подключение обработки и Arduino — Входы и выходы
Заключительная часть этой лабораторной работы — соединить вместе входное устройство (фотоэлемент) и выходное устройство (встроенный светодиод).Для этого подключите фотоэлемент, как показано в предыдущей лабораторной документации. Загрузите скетч под названием «PhotoCellandLED».
Первые две строки эскиза должны быть знакомы, поскольку они взяты непосредственно из примера аналогового входа. Эти две строки считывают и печатают значение датчика.
Однако следующие строки показывают нечто иное: оператор IF-ELSE.
Оператор IF-ELSE — это просто способ заставить вашу программу делать то или иное действие, но не то и другое одновременно.В этом коде программа проверяет, являются ли данные датчика, хранящиеся в «значении», меньше 300. Если да, то светодиод включается. В противном случае светодиод погаснет.
Попробуйте это:
- Измените знак «<» на знак «>» и посмотрите разницу в поведении
- Измените знак «<» на «==» (два знака равенства). Что происходит с вашим кодом при использовании ==? (Примечание: оператор == проверяет равенство).
Теперь вы знаете, как подключить обработку к Arduino и наоборот.Эти интерфейсы могут обеспечить интересное взаимодействие для физического и визуального опыта. Хотя вам не обязательно использовать обработку, она может быть полезна для очень новых проектов!
Лазерный дальномерLIDAR-Lite — простой эскиз 180-градусного радара на Arduino | Сообщество RobotShop
* примечание *: для обсуждения любых технических проблем с вашим LIDAR-Lite, пожалуйста, перейдите на наш форум и создайте здесь новую тему. Пример двухколесного робота*** Вышла новая версия LIDAR-Lite v3! Посетите это сообщение в блоге для получения более подробной информации ***
Дальность поиска
Определение расстояния до объекта перед вашим роботом — довольно простая задача, которая долгое время надежно решалась с помощью гидролокатора и ИК-датчиков.В большинстве случаев эти два типа датчиков удовлетворяют основные потребности робота в измерении расстояния. Сонар может обеспечить хорошее дальность на большинстве поверхностей, но у них есть широкие лучи обнаружения, которым можно легко помешать. С другой стороны, датчики ИК-диапазона обеспечивают ограниченный луч, который очень мал, но страдает от различий в отражении на различных поверхностях, что приводит к изменению показаний расстояния. До недавнего времени не было подходящего варианта для проектов с ограниченным бюджетом, которые требовали большой дальности, высокой точности и небольшого луча обнаружения для измерения расстояния.Лазерный дальномер LIDAR-Lite [РБ-Пли-01]Лазерный дальномер LIDAR-Lite
Представляем вашему вниманию лазерный дальномер LIDAR-Lite от компании PulsedLight. Этот доступный и компактный лазерный дальномер — это все, что может понадобиться энтузиастам робототехники с дальнобойными задачами! Он оснащен лазерным дальномером на расстоянии до 40 м (~ 131 фут) с точностью ± 2,5 см (~ 1 дюйм) и временем обнаружения менее 20 мс. Все это предлагается в модуле, который весит 16 г (~ 0,56 унции) и потребляет менее 100 мА при 5 В постоянного тока (менее 2 мА в режиме ожидания).Устройство использует простой интерфейс I2C для передачи измеренных расстояний. LIDAR-Lite с сервоприводомArduino, пример
Чтобы продемонстрировать, насколько легко использовать это устройство, мы приводим здесь простой пример «радара» на 180 градусов с использованием LIDAR-Lite, небольшого серводвигателя и некоторых монтажных кронштейнов.БМ (ведомость материалов)
Вот список частей, которые использовались для создания этого примера: *: Обратите внимание, что хотя мы использовали HS-645MG в нашем примере, HS-422 и почти любой другой стандартный RC-серводвигатель мог выполнять эту задачу.**: Мы использовали двусторонний скотч, чтобы закрепить LIDAR-Lite на кронштейне.Настройка
Ниже вы можете найти схему подключения Lynxmotion BotBoarduino к серводвигателю и LIDAR-Lite с использованием одного источника питания как для логики, так и для сервопривода. Проверьте здесь схему подключения с использованием двух источников питания для Lynxmotion BotBoarduino. Схема подключения с одним источником питанияОбразец кода
Вы можете найти исходный код здесь.Выход
Выходные данные образца кода представлены в простом формате: одна строка на каждое показание, с указанием угла и расстояния каждого показания.Этот вывод предназначен для чтения человеком. При взаимодействии с другим микроконтроллером или компьютером рекомендуется иметь более компактный (возможно, двоичный) формат вывода с некоторой коррекцией ошибок для обеспечения достоверности данных. Ниже приведен пример вывода кода примера. Типичный вывод в последовательном мониторе Arduino Мы с нетерпением ждем того, что вы сделаете со своим LIDAR-Lite!инфракрасный_лазер_датчик_дистанции_50m_80m_sku_sen0366-DFRobot
- ДОМ
- СООБЩЕСТВО
- ФОРУМ
- БЛОГ
- ОБРАЗОВАНИЕ
- Контроллер
- DFR0010 Arduino Nano 328
- DFR0136 Сервоконтроллер Flyduino-A 12
- DFR0225 Romeo V2-Все в одном контроллере R3
- Arduino_Common_Controller_Selection_Guide
- DFR0182 Беспроводной геймпад V2.0
- DFR0100 Комплект для начинающих DFRduino для Arduino V3
- DFR0267 Блуно
- DFR0282 Жук
- DFR0283 Мечтатель клен V1.0
- DFR0296 Блуно Нано
- DFR0302 MiniQ 2WD Plus
- DFR0304 Беспроводной геймпад BLE V2
- DFR0305 RoMeo BLE
- DFR0351 Romeo BLE mini V2.0
- DFR0306 Блуно Мега 1280
- DFR0321 Узел Wido-WIFI IoT
- DFR0323 Блуно Мега 2560
- DFR0329 Блуно М3
- DFR0339 Жук Блуно
- DFR0343 Контроллер с низким энергопотреблением UHex
- DFR0355 SIM808 с материнской платой Leonardo
- DFR0392 DFRduino M0 материнская плата, совместимая с Arduino
- DFR0398 Romeo BLE Quad Robot Controller
- DFR0416 Bluno M0 Материнская плата
- DFR0575 Жук ESP32
- DFR0133 X-Доска
- DFR0162 X-Board V2
- DFR0428 3.5-дюймовый сенсорный TFT-экран для Raspberry Pi
- DFR0494 Raspberry Pi ШАПКА ИБП
- DFR0514 DFR0603 IIC 16X2 RGB LCD KeyPad HAT V1.0
- DFR0524 5.5 HDMI OLED-дисплей с емкостным сенсорным экраном V2.0
- DFR0550 5-дюймовый TFT-дисплей с сенсорным экраном V1.0
- DFR0591 модуль дисплея raspberry pi e-ink V1.0
- DFR0592 Драйвер двигателя постоянного тока HAT
- DFR0604 HAT расширения ввода-вывода для Pi zero V1.0
- DFR0566 Шляпа расширения ввода-вывода для Raspberry Pi
- DFR0528 Шляпа ИБП для Raspberry Pi Zero
- DFR0331 Romeo для контроллера Edison
- DFR0453 DFRobot CurieNano — мини-плата Genuino Arduino 101
- TEL0110 CurieCore Intel® Curie Neuron Module
- DFR0478 Микроконтроллер IOT FireBeetle ESP32 (V3.0) с поддержкой Wi-Fi и Bluetooth
- DFR0483 FireBeetle Covers-Gravity I O Expansion Shield
- FireBeetle Covers-24 × 8 светодиодная матрица
- TEL0121 FireBeetle Covers-LoRa Radio 433 МГц
- TEL0122 FireBeetle Covers-LoRa Radio 915 МГц
- TEL0125 FireBeetle охватывает LoRa Radio 868MHz
- DFR0489 FireBeetle ESP8266 Микроконтроллер IOT
- DFR0492 FireBeetle Board-328P с BLE4.1
- DFR0498 FireBeetle Covers-Camera & Audio Media Board
- DFR0507 FireBeetle Covers-OLED12864 Дисплей
- DFR0508 FireBeetle Covers-Двигатель постоянного тока и шаговый драйвер
- DFR0511 FireBeetle Covers-ePaper Черно-белый дисплейный модуль
- DFR0531 FireBeetle Covers-ePaper Черно-белый и красный дисплейный модуль
- DFR0536 Плата расширения геймпада с микробитами
- DFR0548 Плата расширения микробитового драйвера
- ROB0148 micro: Maqueen для micro: bit
- ROB0150 Microbit Круглая плата расширения для светодиодов RGB
- MBT0005 Micro IO-BOX
- SEN0159 Датчик CO2
- DFR0049 DFRobot Датчик газа
- TOY0058 Датчик атмосферного давления
- SEN0220 Инфракрасный датчик CO2 0-50000ppm
- SEN0219 Гравитационный аналоговый инфракрасный датчик CO2 для Arduino
- SEN0226 Датчик барометра Gravity I2C BMP280
- SEN0231 Датчик гравитации HCHO
- SEN0251 Gravity BMP280 Датчики атмосферного давления
- SEN0132 Датчик угарного газа MQ7
- SEN0032 Трехосный акселерометр — ADXL345
- DFR0143 Трехосевой акселерометр MMA7361
- Трехосный акселерометр серии FXLN83XX
- SEN0072 CMPS09 — Магнитный компас с компенсацией наклона
- SEN0073 9 степеней свободы — бритва IMU
- DFR0188 Flymaple V1.1
- SEN0224 Трехосевой акселерометр Gravity I2C — LIS2DH
- SEN0140 Датчик IMU с 10 степенями свободы, версия 2.0
- SEN0250 Gravity BMI160 6-осевой инерционный датчик движения
- SEN0253 Gravity BNO055 + BMP280 интеллектуальный 10DOF AHRS
- SEN0001 URM37 V5.0 Ультразвуковой датчик
- SEN0002 URM04 V2.0
- SEN0004 SRF01 Ультразвуковой датчик
- SEN0005 SRF02 Ультразвуковой датчик
- SEN0006 SRF05 Ультразвуковой датчик
- SEN0007 SRF08 Ультразвуковой датчик
- SEN0008 SRF10 Ультразвуковой датчик
- SEN0149 URM06-RS485 Ультразвуковой
- SEN0150 URM06-UART Ультразвуковой
- SEN0151 URM06-PULSE Ультразвуковой
- SEN0152 URM06-ANALOG Ультразвуковой
- SEN0153 Ультразвуковой датчик URM07-UART
- SEN0246 URM08-RS485 Водонепроницаемый гидролокатор-дальномер
- SEN0304 Ультразвуковой датчик URM09 (Gravity-I2C) (V1.0)
- SEN0304 Ультразвуковой датчик URM09 (Gravity-I2C) (V1.0)
- SEN0300 Водонепроницаемый ультразвуковой датчик ULS
- SEN0301 Водонепроницаемый ультразвуковой датчик ULA
- SEN0307 URM09 Аналог ультразвукового датчика силы тяжести
- SEN0311 A02YYUW Водонепроницаемый ультразвуковой датчик
- SEN0312 ME007YS Водонепроницаемый ультразвуковой датчик
- SEN0313 A01NYUB Водонепроницаемый ультразвуковой датчик
- DFR0066 SHT1x Датчик влажности и температуры
- DFR0067 DHT11 Датчик температуры и влажности
- SEN0137 DHT22 Модуль температуры и влажности
- DFR0023 Линейный датчик температуры DFRobot LM35
- DFR0024 Gravity DS18B20 Датчик температуры, совместимый с Arduino V2
- DFR0024 Gravity DS18B20 Датчик температуры, совместимый с Arduino V2
- SEN0114 Датчик влажности
- Датчик температуры TOY0045 TMP100
- TOY0054 SI7021 Датчик температуры и влажности
- SEN0206 Датчик инфракрасного термометра MLX
- SEN0227 SHT20 Водонепроницаемый датчик температуры и влажности I2C
- SEN0236 Gravity I2C BME280 Датчик окружающей среды Температура, влажность, барометр
- SEN0248 Gravity I2C BME680 Датчик окружающей среды VOC, температура, влажность, барометр
- DFR0558 Цифровой высокотемпературный датчик силы тяжести типа К
- SEN0308 Водонепроницаемый емкостный датчик влажности почвы
- SEN0019 Регулируемый переключатель инфракрасного датчика
- SEN0042 DFRobot Инфракрасный датчик прорыва
- SEN0143 SHARP GP2Y0A41SK0F ИК-датчик рейнджера 4-30 см
- SEN0013 Sharp GP2Y0A02YK ИК-датчик рейнджера 150 см
- SEN0014 Sharp GP2Y0A21 Датчик расстояния 10-80 см
- SEN0085 Sharp GP2Y0A710K Датчик расстояния 100-550 см
- Модуль цифрового ИК-приемника DFR0094
- DFR0095 Модуль цифрового ИК-передатчика
- SEN0018 Цифровой инфракрасный датчик движения
- DFR0107 ИК-комплект
- SEN0264 TS01 ИК-датчик температуры (4-20 мА)
- SEN0169 Аналоговый pH-метр Pro
- DFR0300-H Gravity: аналоговый датчик электропроводности (K = 10)
- DFR0300 Гравитационный аналоговый датчик электропроводности V2 K = 1
- SEN0165 Аналоговый измеритель ОВП
- SEN0161-V2 Комплект гравитационного аналогового датчика pH V2
- SEN0161 PH метр
- SEN0237 Гравитационный аналоговый датчик растворенного кислорода
- SEN0204 Бесконтактный датчик уровня жидкости XKC-Y25-T12V
- SEN0205 Датчик уровня жидкости-FS-IR02
- SEN0244 Gravity Analog TDS Sensor Meter для Arduino
- SEN0249 Комплект измерителя pH с аналоговым наконечником копья силы тяжести для применения в почве и пищевых продуктах
- SEN0121 Датчик пара
- SEN0097 Датчик освещенности
- DFR0026 Датчик внешней освещенности DFRobot
- TOY0044 УФ-датчик
- SEN0172 LX1972 датчик внешней освещенности
- SEN0043 TEMT6000 датчик внешней освещенности
- SEN0175 УФ-датчик v1.0-ML8511
- SEN0228 Gravity I2C VEML7700 Датчик внешней освещенности
- SEN0101 Датчик цвета TCS3200
- DFR0022 Датчик оттенков серого DFRobot
- Датчик отслеживания линии SEN0017 для Arduino V4
- SEN0147 Интеллектуальный датчик оттенков серого
- SEN0212 TCS34725 Датчик цвета I2C для Arduino
- SEN0245 Gravity VL53L0X Лазерный дальномер ToF
- SEN0259 TF Mini LiDAR ToF Laser Range Sensor
- SEN0214 Датчик тока 20А
- SEN0262 Гравитационный аналоговый преобразователь тока в напряжение для приложений 4 ~ 20 мА
- SEN0291 Gravity: Цифровой ваттметр I2C
- DFR0027 Цифровой датчик вибрации DFRobot V2
- DFR0028 DFRobot Датчик наклона
- DFR0029 Цифровая кнопка DFRobot
- DFR0030 DFRobot емкостный датчик касания
- Модуль цифрового зуммера DFR0032
- DFR0033 Цифровой магнитный датчик
- DFR0034 Аналоговый звуковой датчик
- SEN0038 Колесные энкодеры для DFRobot 3PA и 4WD Rovers
- DFR0051 Аналоговый делитель напряжения
- DFR0052 Аналоговый пьезодисковый датчик вибрации
- DFR0076 Датчик пламени
- DFR0053 Аналоговый датчик положения ползуна
- DFR0054 Аналоговый датчик вращения V1
- DFR0058 Аналоговый датчик вращения V2
- Модуль джойстика DFR0061 для Arduino
- DFR0075 AD Клавиатурный модуль
- Модуль вентилятора DFR0332
- SEN0177 PM2.5 лазерный датчик пыли
- Модуль датчика веса SEN0160
- SEN0170 Тип напряжения датчика скорости ветра 0-5 В
- TOY0048 Высокоточный двухосевой датчик инклинометра, совместимый с Arduino Gadgeteer
- SEN0187 RGB и датчик жестов
- SEN0186 Метеостанция с анемометром Флюгер Дождь ведро
- SEN0192 Датчик микроволн
- SEN0185 датчик Холла
- FIT0449 DFRobot Speaker v1.0
- Датчик сердечного ритма SEN0203
- DFR0423 Самоблокирующийся переключатель
- SEN0213 Датчик монитора сердечного ритма
- SEN0221 Датчик угла Холла силы тяжести
- Датчик переключателя проводимости SEN0223
- SEN0230 Инкрементальный фотоэлектрический датчик угла поворота — 400P R
- SEN0235 Модуль поворотного энкодера EC11
- SEN0240 Аналоговый датчик ЭМГ от OYMotion
- SEN0232 Гравитационный аналоговый измеритель уровня звука
- SEN0233 Монитор качества воздуха PM 2.5, формальдегид, датчик температуры и влажности
- DFR0515 FireBeetle Covers-OSD Модуль наложения символов
- SEN0257 Датчик гравитационного давления воды
- SEN0289 Gravity: Цифровой датчик встряхивания
- SEN0290 Gravity: Датчик молнии
- DFR0271 GMR Плата
- ROB0003 Pirate 4WD Мобильная платформа
- Мобильная платформа ROB0005 Turtle 2WD
- ROB0025 NEW A4WD Мобильный робот с кодировщиком
- ROB0050 4WD MiniQ Полный комплект
- ROB0111 4WD MiniQ Cherokey
- ROB0036 Комплект роботизированной руки с 6 степенями свободы
- Комплект наклонно-поворотного устройства FIT0045 DF05BB
- ROB0102 Мобильная платформа Cherokey 4WD
- ROB0117 Базовый комплект для Cherokey 4WD
- ROB0022 4WD Мобильная платформа
- ROB0118 Базовый комплект для Turtle 2WD
- Робот-комплект ROB0080 Hexapod
- ROB0112 Мобильная платформа Devastator Tank
- ROB0114 Мобильная платформа Devastator Tank
- ROB0124 Мобильная платформа HCR с всенаправленными колесами
- ROB0128 Devastator Tank Мобильная платформа Металлический мотор-редуктор постоянного тока
- ROB0137 Explorer MAX Робот
- ROB0139 Робот FlameWheel
- DFR0270 Accessory Shield для Arduino
- DFR0019 Щит для прототипирования для Arduino
- DFR0265 IO Expansion Shield для Arduino V7
- DFR0210 Пчелиный щит
- DFR0165 Mega IO Expansion Shield V2.3
- DFR0312 Плата расширения Raspberry Pi GPIO
- DFR0311 Raspberry Pi встречает Arduino Shield
- DFR0327 Arduino Shield для Raspberry Pi 2B и 3B
- DFR0371 Экран расширения ввода-вывода для Bluno M3
- DFR0356 Щит Bluno Beetle
- DFR0412 Gravity IO Expansion Shield для DFRduino M0
- DFR0375 Cookie I O Expansion Shield V2
- DFR0334 GPIO Shield для Arduino V1.0
- DFR0502 Gravity IO Expansion & Motor Driver Shield V1.1
- DFR0518 Micro Mate — мини-плата расширения для микробита
- DFR0578 Gravity I O Expansion Shield для OpenMV Cam M7
- DFR0577 Gravity I O Expansion Shield для Pyboard
- DFR0626 MCP23017 Модуль расширения с IIC на 16 цифровых IO
- DFR0287 LCD12864 Экран
- DFR0009 Экран ЖК-клавиатуры для Arduino
- DFR0063 I2C TWI LCD1602 Модуль, совместимый с Gadgeteer
- Модуль DFR0154 I2C TWI LCD2004, совместимый с Arduino Gadgeteer
- Светодиодная матрица DFR0202 RGB
- DFR0090 3-проводной светодиодный модуль
- TOY0005 OLED 2828 модуль цветного дисплея.Совместимость с NET Gadgeteer
- Модуль дисплея TOY0006 OLED 9664 RGB
- Модуль дисплея TOY0007 OLED 2864
- Модуль дисплея FIT0328 2.7 OLED 12864
- DFR0091 3-проводной последовательный ЖК-модуль, совместимый с Arduino
- DFR0347 2.8 TFT Touch Shield с 4 МБ флэш-памяти для Arduino и mbed
- DFR0348 3.5 TFT Touch Shield с 4 МБ флэш-памяти для Arduino и mbed
- DFR0374 Экран LCD клавиатуры V2.0
- DFR0382 Экран со светодиодной клавиатурой V1.0
- DFR0387 TELEMATICS 3.5 TFT сенсорный ЖК-экран
- DFR0459 Светодиодная матрица RGB 8×8
- DFR0460 Светодиодная матрица RGB 64×32 — шаг 4 мм / Гибкая светодиодная матрица 64×32 — Шаг 4 мм / Гибкая светодиодная матрица 64×32 — Шаг 5 мм
- DFR0461 Гибкая светодиодная матрица 8×8 RGB Gravity
- DFR0462 Гибкая светодиодная матрица 8×32 RGB Gravity
- DFR0463 Gravity Гибкая светодиодная матрица 16×16 RGB
- DFR0471 Светодиодная матрица RGB 32×16 — шаг 6 мм
- DFR0472 Светодиодная матрица RGB 32×32 — шаг 4 мм
- DFR0464 Gravity I2C 16×2 ЖК-дисплей Arduino с подсветкой RGB
- DFR0499 Светодиодная матрица RGB 64×64 — шаг 3 мм
- DFR0506 7-дюймовый дисплей HDMI с емкостным сенсорным экраном
- DFR0555 \ DF0556 \ DFR0557 Gravity I2C LCD1602 Модуль ЖК-дисплея Arduino
- DFR0529 2.2-дюймовый ЖК-дисплей TFT V1.0 (интерфейс SPI)
- DFR0605 Gravity: Цифровой светодиодный модуль RGB
- FIT0352 Цифровая светодиодная водонепроницаемая лента с RGB-подсветкой 60LED м * 3 м
- DFR0645-G DFR0645-R 4-цифровой светодиодный сегментный модуль дисплея
- Артикул DFR0646-G DFR0646-R 8-цифровой светодиодный сегментный модуль дисплея
- DFR0597 Гибкая светодиодная матрица RGB 7×71
- DFR0231 Модуль NFC для Arduino
- Модуль радиоданных TEL0005 APC220
- TEL0023 BLUETOOH BEE
- TEL0026 DF-BluetoothV3 Bluetooth-модуль
- Модуль беспроводного программирования TEL0037 для Arduino
- TEL0044 DFRduino GPS Shield-LEA-5H
- TEL0047 WiFi Shield V2.1 для Arduino
- TEL0051 GPS GPRS GSM модуль V2.0
- TEL0067 Wi-Fi Bee V1.0
- TEL0073 BLE-Link
- TEL0075 RF Shield 315 МГц
- TEL0078 WIFI Shield V3 PCB Антенна
- TEL0079 WIFI Shield V3 RPSMA
- TEL0084 BLEmicro
- TEL0086 DF-маяк EVB
- TEL0087 USBBLE-LINK Bluno Адаптер для беспроводного программирования
- TEL0080 UHF RFID МОДУЛЬ-USB
- TEL0081 УВЧ RFID МОДУЛЬ-RS485
- TEL0082 UHF RFID МОДУЛЬ-UART
- TEL0083-A GPS-приемник для Arduino Model A
- TEL0092 WiFi Bee-ESP8266 Wirelss модуль
- Модуль GPS TEL0094 с корпусом
- TEL0097 SIM808 GPS GPRS GSM Shield
- DFR0342 W5500 Ethernet с материнской платой POE
- DFR0015 Xbee Shield для Arduino без Xbee
- TEL0107 WiFiBee-MT7681 Беспроводное программирование Arduino WiFi
- TEL0089 SIM800C GSM GPRS Shield V2.0
- Модуль приемника RF TEL0112 Gravity 315MHZ
- TEL0113 Gravity UART A6 GSM и GPRS модуль
- TEL0118 Gravity UART OBLOQ IoT-модуль
- Модуль TEL0120 DFRobot BLE4.1
- Bluetooth-адаптер TEL0002
- Модуль аудиоприемника Bluetooth TEL0108
- TEL0124 SIM7600CE-T 4G (LTE) Shield V1.0
- DFR0505 SIM7000C Arduino NB-IoT LTE GPRS Expansion Shield
- DFR0013 IIC в GPIO Shield V2.0
- Плата привода двигателя датчика DFR0057 — Версия 2.2
- DFR0062 Адаптер WiiChuck
- DFR0233 Узел датчика RS485 V1.0
- DFR0259 Arduino RS485 щит
- DFR0370 Экран CAN-BUS V2
- DFR0627 IIC для двойного модуля UART
- TEL0070 Multi USB RS232 RS485 TTL преобразователь
- DFR0064 386AMP модуль аудиоусилителя
- DFR0273 Экран синтеза речи
- DFR0299 DFPlayer Mini
- TOY0008 DFRduino Плеер MP3
- SEN0197 Диктофон-ISD1820
- DFR0420 Аудиозащитный экран для DFRduino M0
- DFR0534 Голосовой модуль
- SD2403 Модуль часов реального времени SKU TOY0020
- TOY0021 SD2405 Модуль часов реального времени
- DFR0151 Модуль Gravity I2C DS1307 RTC
- DFR0469 Модуль Gravity I2C SD2405 RTC
- DFR0316 MCP3424 18-битный канал АЦП-4 с усилителем с программируемым усилением
- DFR0552 Gravity 12-битный модуль I2C DAC
- DFR0553 Gravity I2C ADS1115 16-битный модуль АЦП, совместимый с Arduino и Raspberry Pi
- DFR0117 Модуль хранения данных Gravity I2C EEPROM
- Модуль SD DFR0071
- Плата привода двигателя датчика DFR0057 — Версия 2.2
- DFR0360 XSP — Программист Arduino
- DFR0411 Двигатель постоянного тока Gravity 130
- DFR0438 Яркий светодиодный модуль
- DFR0439 Светодиодные гирлянды красочные
- DFR0440 Модуль микровибрации
- DFR0448 Светодиодные гирлянды, теплый белый цвет
- Встроенный термопринтер DFR0503 — последовательный TTL
- DFR0504 Гравитационный изолятор аналогового сигнала
- DFR0520 Двойной цифровой потенциометр 100K
- DFR0565 Гравитационный цифровой изолятор сигналов
- DFR0563 Гравитация 3.Датчик уровня топлива литиевой батареи 7V
- DFR0576 Гравитационный цифровой мультиплексор I2C с 1 по 8
- DFR0117 Модуль хранения данных Gravity I2C EEPROM
- DRI0001 Моторный щит Arduino L293
- DRI0002 MD1.3 2A Двухмоторный контроллер
- DRI0009 Моторный щит Arduino L298N
- DRI0021 Драйвер двигателя постоянного тока Veyron 2x25A Brush
- DRI0017 2A Моторный щит для Arduino Twin
- Драйвер двигателя постоянного тока DRI0018 2x15A Lite
- Микродвигатель постоянного тока FIT0450 с энкодером-SJ01
- FIT0458 Микродвигатель постоянного тока с энкодером-SJ02
- DFR0399 Микро-металлический мотор-редуктор постоянного тока 75 1 Вт Драйвер
- DRI0039 Quad Motor Driver Shield для Arduino
- DRI0040 Двойной 1.Драйвер двигателя 5A — HR8833
- DRI0044 2×1.2A Драйвер двигателя постоянного тока TB6612FNG
- Драйвер двигателя постоянного тока DFR0513 PPM 2x3A
- DFR0523 Гравитационный цифровой перистальтический насос
- DRI0027 Digital Servo Shield для Arduino
- DRI0029 Сервопривод Veyron, 24 канала
- SER0044 DSS-M15S 270 ° 15KG Металлический сервопривод DF с аналоговой обратной связью
- DRI0023 Экран шагового двигателя для Arduino DRV8825
- DRI0035 TMC260 Щиток драйвера шагового двигателя
- DFR0105 Силовой щит
- DFR0205 Силовой модуль
- DFR0457 Контроллер мощности Gravity MOSFET
- DFR0564 Зарядное устройство USB для 7.Литий-полимерная батарея 4 В
- DFR0535 Менеджер солнечной энергии
- DFR0559 Солнечная система управления мощностью 5 В для подсолнечника
- DFR0559 Менеджер солнечной энергии 5 В
- DFR0580 Solar Power Manager для свинцово-кислотных аккумуляторов 12 В
- DFR0222 Реле X-Board
- Релейный модуль DFR0017, совместимый с Arduino
- DFR0289 Релейный контроллер RLY-8-POE
- DFR0290 RLY-8-RS485 8-релейный контроллер
- DFR0144 Релейный экран для Arduino V2.1
- DFR0473 Gravity Digital Relay Module Совместимость с Arduino и Raspberry Pi
- KIT0003 EcoDuino — Комплект для автомобильных заводов
- KIT0071 MiniQ Discovery Kit
- KIT0098 Пакет компонентов подключаемого модуля Breadboard
- Артикул DFR0748 Цветок Китти
- SEN0305 Гравитация: HUSKYLENS — простой в использовании датчик машинного зрения AI
- Подключение датчика к Raspberry Pi
- DFR0677 ШЛЯПА ONPOWER UPS для Raspberry Pi
для Arduino — ультразвуковой дальномер — kookye.com
БьямберУчебное пособие по графическому программированию для Arduino — ультразвуковой дальномер
В этом уроке мы покажем, как сделать ультразвуковой дальномер и отображать расстояние на экране.
Если вы хотите отображать результаты ультразвукового датчика HC-SR04 на ЖК-дисплее I2C, вы можете использовать следующий источник.
ОБОРУДОВАНИЕ
- Плата Osoyoo UNO (полностью совместима с Arduino UNO rev.3) х 1
- Ультразвуковой датчик HC-SR04 x 1
- I2C ЖК-дисплей 1602 x 1
- Макетная плата x 1
- Джемперы
- Кабель USB x 1
- шт. X 1
Прежде чем писать код, необходимо построить схему. Для этого соедините пины следующим образом:
Osoyoo UNO | I2C 1602 ЖК-дисплей |
ЗЕМЛЯ | ЗЕМЛЯ |
5В | VCC |
A4 | SDA |
A5 | SCL |
Примечание:
- Для Mega2560: соединения I2C находятся на SDA = 20 и SCL = 21.Итак, подключите их вместе с двумя выводами питания к клеммам 5V и GND .
- Для Arduino Leonardo: подключите SDA к цифровому контакту 2, а SCL — к цифровому контакту 3 на вашем Arduino.
Ультразвуковой дальномер HC-SR04 имеет четыре контакта: Vcc, Trig, Echo и GND. Вывод Vcc (здесь подключается к + 5V) подает питание для генерации ультразвуковых импульсов. Вывод GND подключен к земле. Триггерный вывод (здесь подключается к D3) — это то место, где Arduino отправляет сигнал для запуска ультразвукового импульса.Контакт Echo (здесь подключитесь к D2) — это то место, где ультразвуковой дальномер отправляет информацию о продолжительности поездки, совершенной ультразвуковым импульсом, на плату Osoyoo Uno.
Постройте схему, как показано ниже на биграмме:
КОД ПРОГРАММЫ
После выполнения вышеуказанных операций подключите плату Arduino к компьютеру с помощью кабеля USB. Зеленый светодиодный индикатор питания (обозначенный PWR ) должен загореться. Откройте программу графического программирования Mixly и выполните следующие операции:
Щелкните Сохранить, после чего программирование завершено.Перед загрузкой выберите тип платы и последовательный порт. Для установки платы Uno просто выберите Arduino / Genuino Uno: если вы используете Mega2560, выберите Arduino / Genuino Mega или Mega2560.
Выберите последовательное устройство платы Arduino в меню COM . Скорее всего, это COM3 или выше ( COM1 и COM2 обычно зарезервированы для аппаратных последовательных портов). Чтобы узнать это, вы можете отключить плату Arduino и снова открыть меню; пропадающая запись должна быть платой Arduino.Снова подключите плату и выберите этот последовательный порт.
Затем загрузите код. Если загрузка не удалась, проверьте и исправьте код в соответствии с подсказками
Наконец, статус изменится на «Загрузка успешна!».
Рабочий результат
Через несколько секунд после завершения загрузки переместите плату ближе к датчику или удалите ее дальше. Вы можете увидеть, что значение, отображаемое на ЖК-дисплее, соответственно изменится; он указывает расстояние между платой и ультразвуковым датчиком.
Датчики расстояния(дальномеры) | Руководство пользователя PX4
Датчики расстояния обеспечивают измерение расстояния, которое можно использовать для отслеживания местности, удержания на местности (т. Е. Точного зависания для фотографирования), улучшенных характеристик посадки (дальность), предупреждения о нормативных пределах высоты, предотвращения столкновений и т. Д.
Это В разделе перечислены датчики расстояния, поддерживаемые PX4 (ссылки на более подробную документацию), общая конфигурация, необходимая для всех дальномеров, информация о тестировании и моделировании.Более подробная информация о настройке и конфигурации представлена в темах, ссылки на которые приведены ниже (и на боковой панели).
Поддерживаемые дальномеры
ARK Flow
ARK Flow — это времяпролетный (ToF) и оптический модуль датчика потока с открытым исходным кодом, способный измерять расстояния от 8 см до 30 м. Его можно подключить к полетному контроллеру через порт CAN1, что позволяет подключать дополнительные датчики через порт CAN2. Он работает с прошивкой PX4, поддерживает обновление прошивки UAVCAN и имеет крошечный форм-фактор.
Holybro ST VL53L1X Lidar
VL53L1X (открывается в новом окне) — это ультрасовременный времяпролетный (ToF) лазерный датчик дальности, расширяющий семейство продуктов ST FlightSense ™. Это самый быстрый миниатюрный датчик ToF на рынке с точностью до 4 м и частотой до 50 Гц.
Lidar-Lite
Lidar-Lite — компактный, высокопроизводительный оптический дальномер для измерения дальности. Он имеет диапазон датчика от (5 см до 40 м) и может быть подключен к портам PWM или I2C.
MaxBotix I2CXL-MaxSonar-EZ
Дальность MaxBotix I2CXL-MaxSonar-EZ (открывается в новом окне) имеет ряд гидролокаторов с относительно малым радиусом действия, которые подходят для вспомогательного взлета / посадки и предотвращения столкновений. Их можно подключить через порт I2C.
Дальномеры активируются с помощью параметра SENS_EN_MB12XX.
Lightware LIDARs
Lightware SFxx Lidar предоставляет широкий спектр легких «лазерных высотомеров», которые подходят для многих приложений с дронами.
PX4 поддерживает: SF11 / c и SF / LW20. PX4 также может использоваться со следующими снятыми с производства моделями: SF02, SF10 / a, SF10 / b, SF10 / c.
Дальномеры TeraRanger
TeraRanger предлагает ряд легких датчиков измерения расстояния, основанных на инфракрасной технологии Time-of-Flight (ToF). Как правило, они быстрее и имеют большую дальность действия, чем гидролокаторы, а также меньше и легче, чем лазерные системы.
PX4 поддерживает следующие модели, подключенные через шину I2C: TeraRanger One, TeraRanger Evo 60m и TeraRanger Evo 600Hz.
Стандартный радарный высотомер Ainstein US-D1
Стандартный радарный высотомер Ainstein US-D1 представляет собой компактный микроволновый дальномер, оптимизированный для использования на БПЛА. Дальность обнаружения составляет около 50 метров. Особые преимущества этого продукта заключаются в том, что он может эффективно работать в любых погодных условиях и на любой местности (включая воду).
LeddarOne
LeddarOne — это небольшой лидарный модуль с узким, но рассеянным лучом, который обеспечивает превосходную общую дальность обнаружения и производительность в прочном, надежном и экономичном корпусе.Он имеет диапазон срабатывания от 1 см до 40 м и должен быть подключен к UART / последовательной шине.
TFmini
Benewake TFmini Lidar — это крошечный, недорогой и маломощный лидар с дальностью действия 12 м.
PSK-CM8JL65-CC5
Инфракрасный датчик расстояния Lanbao PSK-CM8JL65-CC5 ToF представляет собой очень маленький (38 мм x 18 мм x 7 мм, <10 г) ИК-датчик расстояния с диапазоном измерения 0,17–8 м и миллиметровым разрешением. Он должен быть подключен к UART / последовательной шине.
Интерфейс лазерного высотомера Avionics Anonymous UAVCAN
Интерфейс лазерного высотомера Avionics Anonymous UAVCAN позволяет использовать несколько распространенных дальномеров (например.грамм. Lightware SF11 / c, SF30 / D и т. Д.) Для подключения к шине UAVCAN, более надежному интерфейсу, чем I2C.
Конфигурация / настройка
Дальномеры обычно подключаются либо к последовательному (PWM), либо к I2C-порту (в зависимости от драйвера устройства) и активируются на порту путем установки определенного параметра.
Настройка аппаратного и программного обеспечения для каждого датчика расстояния рассматривается в отдельных разделах.
Общая конфигурация , общая для всех датчиков расстояния , охватывающая как физическую настройку, так и использование, приведена ниже.
Общая конфигурация
Общая конфигурация дальномера указывается с помощью параметров EKF2_RNG_ *. К ним относятся (не исчерпывающе):
- EKF2_RNG_POS_X, EKF2_RNG_POS_Y, EKF2_RNG_POS_Z — смещение дальномера от центра тяжести автомобиля в направлениях X, Y, Z.
- EKF2_RNG_PITCH — Значение 0 градусов (по умолчанию) соответствует точному выравниванию дальномера с вертикальной осью транспортного средства (т. Е. Прямо вниз), а 90 градусов указывают, что дальномер направлен вперед.Простая тригонометрия используется для расчета расстояния до земли, если используется ненулевой шаг.
- EKF2_RNG_DELAY — приблизительная задержка поступления данных в оценщик от датчика.
- EKF2_RNG_SFE — масштабатор шума, зависящий от дальности.
- EKF2_RNG_NOISE — Измерение шума для слияния дальномеров
Тестирование
Самый простой способ проверить дальномер — это изменить диапазон и сравнить со значениями, обнаруженными PX4. В разделах ниже показаны некоторые подходы к получению измеренного диапазона.
QGroundControl MAVLink Inspector
QGroundControl MAVLink Inspector позволяет просматривать сообщения, отправленные с автомобиля, включая информацию DISTANCE_SENSOR
с дальномера.
Основное различие между инструментами заключается в том, что инструмент Analyze может отображать значения на графике.
Примечание
Количество отправляемых сообщений зависит от конфигурации автомобиля.
Вы получите сообщение DISTANCE_SENSOR
только в том случае, если на подключенном автомобиле установлен дальномер и он публикует значения датчиков.
Для просмотра выходных данных дальномера:
Откройте меню Q> Выбрать инструмент> Инструменты анализа :
Выберите сообщение
DISTANCE_SENSOR
, а затем установите флажок для графика противcurrent_distance
. Затем инструмент отобразит результат:
QGroundControl MAVLink Console
Вы также можете использовать QGroundControl MAVLink Console для наблюдения за Distance_sensor
uORB тема:
Note
QGroundControl MAVLink Console работает, но с другими целями 911hawk не Симулятор.На Симуляторе вы можете запускать команды прямо в терминале.
Для получения дополнительной информации см .: Разработка> Отладка / ведение журнала> Отладка датчика / темы с помощью команды прослушивателя.
Simulation
Лидарные и сонарные дальномеры можно использовать в имитаторе беседки. Для этого вы должны запустить симулятор, используя модель транспортного средства, которая включает в себя дальномер.
Модель iris с оптическим потоком включает в себя лазерный дальномер:
Typhoon_h580 включает в себя сонарный дальномер:
Если вам нужно использовать другое транспортное средство, вы можете включить модель в его файл конфигурации.Вы можете увидеть, как это сделать, в соответствующих файлах конфигурации Iris и Typhoon:
Кодовые блоки для проекта ультразвукового дальномера с использованием Arduino в Tinkercad
КОДОВЫЕ БЛОКИДЛЯ ПРОЕКТА УЛЬТРАЗВУКОВОГО ПОИСКА ДИАПАЗОНА С ИСПОЛЬЗОВАНИЕМ ARDUINO В TINKERCAD
В этом руководстве вы увидите кодовые блоки для проекта ультразвукового дальномера с использованием Arduino в Tinkercad, прежде чем это позволит понять ультразвуковой датчик.
Ультразвуковой датчик — это электронный компонент, используемый для обнаружения диапазона целевого объекта путем излучения ультразвуковых волн (звуковых волн).
Он имеет высокий тон звука, который люди не могут слышать , и он излучает звук с частотой около 40 кГц . Этот датчик в основном состоит из двух частей , преобразователя, который производит ультразвуковой звук волны и еще один, что слушает свое эхо .
НЕОБХОДИМОЕ ОБОРУДОВАНИЕ ИЛИ КОМПОНЕНТ
S.N. | КОМПОНЕНТЫ | КОЛИЧЕСТВО |
1. | Arduino Uno | 1 |
2. | Ультразвуковой датчик HC SR04 | 1 |
СХЕМА
ТАБЛИЦА ПОДКЛЮЧЕНИЙ УЛЬТРАЗВУКОВОГО ДАТЧИКА ДЛЯ ВЗАИМОДЕЙСТВИЯ С ARDUINO В TINKERCADS.N. | АРДУИНО | УЛЬТРАЗВУКОВОЙ ДАТЧИК |
1. | 5 В | VCC |
2. | 8 | TRIG |
3. | 7 | ECHO |
4. | ЗЕМЛЯ | ЗЕМЛЯ |
В этой схеме мы используем ультразвуковой датчик HC SR04 с Arduino, который имеет четыре контакта: VCC, TRIG, ECHO и GND. Контакты VCC и GND подключены к контактам 5V и GND Arduino соответственно. Контакт триггера (TRIG) датчика подключен к контакту 8 цифрового выхода, а контакт эхо (ECHO) подключен к контакту 7 цифрового входа Arduino соответственно.
РАСПОЛОЖЕНИЕ БЛОКОВ И ТЕКСТОВОГО КОДА ДЛЯ ПРОЕКТА УЛЬТРАЗВУКОВОГО ДИАПАЗОНА В TINKERCAD
Нажмите, чтобы увеличитьБЛОКИ КОДА И ОБЪЯСНЕНИЕ ТЕКСТОВОГО КОДА
БЛОК ПОЯСНЕНИЯШаг 1: Сначала щелкните блоки переменных , затем щелкните , создайте переменную … затем введите новое имя переменной как « сантиметр» ( или любое имя ) , Чтобы измерить целевые объекты в сантиметры.
, а затем нажмите кнопку ОК .После этого мы получаем три блока переменных переменных в блоках переменных, таких как
Затем мы перетащим из него блок set command и поместим его в рабочую область.
Шаг 2: После этого перейдите к блокам ввода опцию перетащите блоки команд «считывать ультразвуковой датчик расстояния»
Нажмите, чтобы увеличитьиз него и поместите его в , установите командный блок , как это
Нажмите, чтобы увеличитьПосле этого измените ультразвуковой датчик расстояния на спусковом штифте с 0 на 8 и со следующего эхо-штифта от спускового штифта на 7, , где находятся контакты TRIG и ECHO. подключен к Arduino.
Нажмите, чтобы увеличитьШаг 3: Снова перейдите к блокам переменных и нажмите кнопку создать переменную … и введите новое имя переменной как «дюймы» ( или любое имя ) , чтобы измерить расстояние целевого объекта в дюймах.
, а затем нажмите кнопку ОК . После этого мы также получаем командный блок дюймов в блоке переменных, из созданной переменной мы перетащим из нее set command block и поместим его в рабочую область ниже первого командного блока
Нажмите, чтобы увеличитьТеперь перейдем к математическому блоку и перетащим из него первый блок
и поместите его в блок в дюймах вместо 0
Нажмите, чтобы увеличитьПосле этого перейдите к блоку переменных еще раз и перетащите из него блок сантиметров и поместите его в заданный блок на место эллиптической формы
.А затем введите 2.54 к следующей коробке эллиптической формы
Нажмите, чтобы увеличитьи выберите знак разделения в раскрывающемся меню, как это
Нажмите, чтобы увеличитьКак мы знаем, при переводе сантиметров в сантиметры мы должны разделить сантиметры на 2,54.
1 дюйм = 2,54 сантиметра
1 сантиметр = 1 / 2,54 дюйма
Шаг 4: После этого мы перейдем к блоку вывода и перетащим из него команду «печать на последовательный монитор» и поместим ее в рабочую область под вторым блоком
Нажмите, чтобы увеличитьТеперь перейдите к блоку переменных и перетащите из него команду переменных дюймов и поместите ее в печать на последовательный монитор в месте «hello world» и установите без новой строки в раскрывающемся меню
Нажмите, чтобы увеличитьШаг 5: Перейдите к выходному блоку и перетащите из него командный блок «печать на последовательный монитор» , поместите его в рабочую область под третьим блоком и напишите «in |» (для дюймов и | для разделения) вместо «hello world» и, щелкнув следующее всплывающее меню, мы снова выберем без новой строки.
Нажмите, чтобы увеличитьШаг 6: Снова перетащите «печать на монитор последовательного порта» командный блок из выходного блока и поместите его в рабочую область под четвертым блоком и перетащите переменную «сантиметр» на этот раз и поместите его в «печать на серийный монитор» вместо «привет, мир». Потому что после вычисления расстояния до объекта в дюймах мы хотим вычислить и его в сантиметрах.
Нажмите, чтобы увеличитьШаг 7: Еще раз перейдите к блоку вывода и перетащите из него командный блок «print to the serial monitor» и поместите его в рабочую область под пятым блоком и напишите «cm» ( сантиметр) на месте «hello world» и, щелкнув следующее раскрывающееся меню, мы выберем с новой строкой .Чтобы после каждого цикла данные печатались в следующей строке
Щелкните, чтобы увеличитьШаг 8: В конце перейдите к блоку управления и перетащите из него командный блок «wait» и поместите его в рабочую область под шестым командным блоком.
Этот командный блок ожидания используется для приостановки программы на 1 секунду
Нажмите, чтобы увеличить ТЕКСТОВЫЙ КОД ПОЯСНЕНИЯ/ * Учебник: https://pijaeducation.com/tinkercad/code-blocks-ultrasonic-range-finder-project-with-arduino-in-tinkercad/ * / int сантиметр = 0; int дюймы = 0; long readUltrasonicDistance (int triggerPin, int echoPin) { pinMode (triggerPin, ВЫХОД); // Очистить триггер digitalWrite (triggerPin, LOW); delayMicroseconds (2); // Устанавливает вывод триггера в состояние ВЫСОКОЕ на 10 микросекунд digitalWrite (triggerPin, HIGH); delayMicroseconds (10); digitalWrite (triggerPin, LOW); pinMode (echoPin, ВХОД); // Считывает вывод эха и возвращает время прохождения звуковой волны в микросекундах возвратите pulseIn (echoPin, HIGH); } void setup () { Серийный номер .begin (9600); } void loop () { сантиметр = 0,01723 * readUltrasonicDistance (8, 7); дюймы = (сантиметр / 2,54); Серийный номер . Отпечаток (дюймы); Серийный .print ("в |"); Серийный . Отпечаток (сантиметр); Серийный номер .println («см.»); задержка (1000); // Ждем 1000 миллисекунд }
Здесь, функция In loop (), расстояние в сантиметрах рассчитывается по формуле
★ Как известно, скорость звука в воздухе = 340 м / сек, что соответствует примерно 29.412 микросекунд / см
★ Здесь мы будем использовать эту формулу для измерения расстояния, пройденного ультразвуковым датчиком звука
Расстояние = (Время * скорость звука) / 2
Эта цифра «2» здесь разделена, потому что звук распространяется вперед и назад. «Назад и вперед» означает, что сначала звук излучается ультразвуковым датчиком звука, а затем возвращается обратно после наведения на объект.
Расстояние = (100 × 340) / 1000000) / 2
= 0.017
НАЧАТЬ МОДЕЛИРОВАНИЕ БЛОКИ КОДОВ ДЛЯ УЛЬТРАЗВУКОВОГО ДИАПАЗОНА Нажмите, чтобы увеличить[панель]
СЛЕДУЮЩИЕ БЛОКИ КОДА POST
ДЛЯ ДАТЧИКА PIR И ARDUINO В TINKERCAD
ПРЕДЫДУЩИЙ ПОСТ
КОДОВЫЕ БЛОКИ ДЛЯ ВЗАИМОДЕЙСТВИЯ ПЕРЕКЛЮЧАТЕЛЯ И СВЕТОДИОДОВ С ARDUINO В TINKERCAD
Робот
Arduino с лазерным датчиком параллакса — Pt 2
// ********************************* ************************************************* *******************************
#include
#include
#include «Утилита / Adafruit_MS_PWMServoDriver.h»
#include
000
000 Serial.
#include
#define ledPin 13
#define BUFSIZE 16
#define rxPin 8 // Последовательный вход (подключается к контакту 9000
SOUT 8 LRF) define txPin 9 // Последовательный выход (подключается к выводу SIN LRF)
SoftwareSerial lrfSerial = SoftwareSerial (rxPin, txPin); // Размер буфера (в байтах) для входящих данных
// Создайте объект моторного щита с адресом I2C по умолчанию
Adafruit_MotorShield AFMS = Adafruit_MotorShield ();
// Подключите шаговый двигатель с 200 шагами на оборот (1.8 градусов)
Adafruit_StepperMotor * myMotor1 = AFMS.getStepper (200, 1); // порт двигателя №1 (M1 и M2)
Adafruit_StepperMotor * myMotor2 = AFMS.getStepper (200, 2); // порт двигателя №2 (M3 и M4)
Servo panMotor; // сервопривод для сканирования лазерного дальномера (lrf)
int leftDistance1;
int leftDistance2;
int rightDistance1;
int rightDistance2;
int maxDistance;
внутренний угол поворота;
внутренних направлений;
int distanceFwd;
const int a = 30;
// ****************************************** ************************************ начать настройку ********** ****************
void setup () {
Serial.begin (9600); // настраиваем последовательную библиотеку на 9600 бит / с
panMotor.attach (10); // Присоединяем сервопривод для сканирования к выводу 10
AFMS.begin (); // создаем с частотой по умолчанию 1,6 кГц
myMotor1-> setSpeed (100); // Установить скорость шагового двигателя1 на 100 об / мин
myMotor2-> setSpeed (100); // Установить скорость шагового двигателя2 на 100 об / мин
pinMode (ledPin, OUTPUT);
pinMode (rxPin, INPUT); // Входной контакт для LRF
pinMode (txPin, OUTPUT); // Выходной контакт для LRF
digitalWrite (ledPin, LOW); // выключить светодиод
Serial.begin (9600);
пока (! Серийный); // Ждем готовности
lrfSerial.begin (9600);
Serial.print («Ожидание LRF …»);
задержка (2000); // Задержка запуска модуля LRF
lrfSerial.print (‘U’); // Отправить символ
while (lrfSerial.read ()! = ‘:’);
задержка (10); // Короткая задержка
lrfSerial.flush (); // Очищаем буфер приема
Serial.println («Готово!»);
Serial.flush (); // Ожидание передачи всех байтов в Serial Monitor
panMotor.write (90);
задержка (а);
}
// ************************************* *************************** начать цикл ******************** *********************
пустой цикл ()
{
distanceFwd = lrf ();
maxDistance = distanceFwd;
oled1 ();
if (distanceFwd> 700)
{Motor (500,1);}
else
if (distanceFwd> 400)
{Motor (200,1); }
else // если путь заблокирован
{checkTurn ();
поворот ();}
}
// ***************************** ********************************** Проверить функцию поворота ************ ********************
недействителен checkTurn ()
{
digitalWrite (ledPin, HIGH);
// ************************** Сканировать влево **************** *******************
panMotor.написать (180);
задержка (а);
leftDistance1 = lrf ();
panMotor.write (135);
задержка (а);
leftDistance2 = lrf ();
олед ();
// *************************** Сканирование вправо *********** **********************
panMotor.напишите (45);
задержка (а);
rightDistance2 = lrf ();
panMotor.write (0);
задержка (а);
rightDistance1 = lrf ();
олед ();
panMotor.write (90);
digitalWrite (ledPin, LOW);
// *********************************** Поверните налево ****** ******************
maxDistance = leftDistance1;
угол поворота = 100;
направлений = 0;
if (maxDistance <= leftDistance2)
{angleTurn = 50;
maxDistance = leftDistance2;
направлений = 0;
}
// ********************************** Поверните направо ** *********************
if (maxDistance <= rightDistance2)
{angleTurn = 50;
maxDistance = rightDistance2;
направлений = 1;
}
if (maxDistance <= rightDistance1)
{angleTurn = 100;
maxDistance = rightDistance1;
направлений = 1;
}
// ****************************** Поверните назад ****** ************************
if ((leftDistance1 <300) && (rightDistance1 <300) && (distanceFwd <300))
{angleTurn = 200;
направлений = 3;
}
}
// ***************************** ****************** Функция поворота ****************************** **************************
пустой поворот ()
{
rightDistance1 = 0;
rightDistance2 = 0;
leftDistance1 = 0;
leftDistance2 = 0;
if (direction == 0) // повернуть налево
{Motor (angleTurn, 3);}
if (direction == 1) // повернуть направо
{Motor (angleTurn, 4);}
if (direction == 3) // повернуть назад
{Motor (angleTurn, 4);}
}
// * ************************************** Функция шагового двигателя ********* ******************************************
void Двигатель ( int x, int y)
{
int i = 0;
for (i; (i { if (y == 1) // двигаться вперед {myMotor1-> step (1, ВПЕРЕД, ОДИНОЧНЫЙ); myMotor2-> step (1, BACKWARD, SINGLE);} if (y == 2) // двигаться назад {myMotor1-> step (1, BACKWARD, ОДИН); myMotor2-> step (1, FORWARD, SINGLE);} if (y == 3) // двигаться влево {myMotor1-> step (1, FORWARD, ОДИН); myMotor2-> step (1, FORWARD, SINGLE);} if (y == 4) // движение вправо {myMotor1-> step (1, BACKWARD, ОДИН); myMotor2-> step (1, BACKWARD, SINGLE);} } } // ***************** ************************************************* **** Функция LRF ****************************** long lrf () { lrfСерийный.печать (‘R’); // Отправляем команду digitalWrite (ledPin, HIGH); // Включаем светодиод во время измерения LRF char lrfData [BUFSIZE]; // Буфер для входящих данных int lrfDataInt1; int lrfDataInt2; int lrfDataInt3; int lrfDataInt4; int lrfDataInt; int offset = 0; // Смещение в буфер lrfData [0] = 0; // Очистить буфер while (1) { if (lrfSerial.available ()> 0) { lrfData [смещение] = lrfSerial.read (); if (lrfData [смещение] == ‘:’) {lrfData [смещение] = 0; перерыв;} смещение ++; если (смещение> = BUFSIZE) смещение = 0; } } lrfDataInt1 = (lrfData [5] -‘0 ‘); lrfDataInt2 = (lrfData [6] -‘0 ‘); lrfDataInt3 = (lrfData [7] -‘0 ‘); lrfDataInt4 = (lrfData [8] -‘0 ‘); lrfDataInt = (1000 * lrfDataInt1) + (100 * lrfDataInt2) + (10 * lrfDataInt3) + lrfDataInt4; Последовательный.промывать(); digitalWrite (ledPin, LOW); return lrfDataInt; } // ************************************* ****************** Функция Oled ****************************** ****************** void oled () { SeeedOled.clearDisplay (); // очищаем экран и устанавливаем начальную позицию в верхний левый угол SeeedOled.setNormalDisplay (); // Устанавливаем отображение в нормальный режим SeeedOled.setPageMode (); // Установить режим адресации на Page Mode SeeedOled.setTextXY (0,0); SeeedOled.putString («Left 1:»); SeeedOled.setTextXY (0,12); SeeedOled.putNumber (leftDistance1); SeeedOled.setTextXY (2,0); SeeedOled.putString («Влево 2:»); SeeedOled.setTextXY (2,12); SeeedOled.putNumber (leftDistance2); SeeedOled.setTextXY (4,0); SeeedOled.putString («Right 1:»); SeeedOled.setTextXY (4,12); SeeedOled.putNumber (rightDistance1); SeeedOled.setTextXY (6,0); SeeedOled.putString («Right 2:»); SeeedOled.setTextXY (6,12); SeeedOled.putNumber (rightDistance2); } void oled1 () { SeeedOled.clearDisplay (); // очищаем экран и устанавливаем начальную позицию в верхний левый угол SeeedOled.setNormalDisplay (); // Устанавливаем отображение в нормальный режим SeeedOled.setPageMode (); // Установите режим адресации на Page Mode SeeedOled.setTextXY (3,3); SeeedOled.putString («Вперед:»); SeeedOled.setTextXY (5,9); SeeedOled.putNumber (distanceFwd); } // ************************************* ************************************************* *****************************************