Что делать, если мы хотим выводить данные не на экран компьютера,
а прямо на наше устройство?
Мы уже имели дело с семисегментным индикатором, но,
как вы помните, работа с ним достаточно нетривиальна, например,
для отладочного вывода каких-то значений проще его не устанавливать.
Поэтому мы можем воспользоваться готовым 4-символьным дисплейчиком,
который управляется по всего 3-м проводам.
У него есть своя электроника,
которая позволяет специальным образом закодированные сигналы получать
и преобразовывать в набор символов на этом дисплее.
Теперь вы уже знаете, что существуют библиотеки,
что с ними как-то можно работать, поэтому мы можем им воспользоваться.
Я подключил дисплейчик ко 2-му пину, и теперь мы разберемся, как с ним работать.
Любой уважающий себя производитель делает описание своих компонентов и,
по возможности, даже выкладывает библиотеки.
В данном случае на сайте amperka я нашел описание этого
дисплея и пошел за библиотекой, которая выложена на github.
Затем я ее могу сохранить и в среде
Arduino найти «Импорт библиотек»,
«Добавить библиотеку» найти то место, куда я сохранил скачанную
библиотеку и затем использовать ее в коде, который я уже подготовил.
Он начинается с подключения библиотеки к QuadDisplay — вот эта самая библиотека,
которую мы только что нашли и можем скачать.
В наш скетч с измерением расстояния ультразвуковым дальномером я добавил
пин для дисплейчика, сделал его выходом и
затем в скетче ничего не менял, кроме того, что вместо вывода
в последовательный порт я использую функцию из библиотеки display int.
Естественно описание функции обычно где-то соседствует с самой библиотекой.
display int принимает 2 параметра: это номер пина, куда подключен дисплей,
и, собственно, значение, которое ей нужно выводить.
Выводим мы то, что нам возвращает функция measure,
которая определена у нас там чуть ниже — мы ее видели в прошлом примере.
Давайте теперь это загрузим и посмотрим, что дисплейчик нам покажет.
Вот то же самое, что мы считывали в
последовательном порту, теперь мы видим на дисплейчике.
Согласитесь, это может быть гораздо удобнее,
нам не нужно связываться с компьютером, мы можем сразу выводить либо рабочие,
либо какие-то отладочные данные на дисплейчик.
А теперь давайте соберем вместе все наши новые
умения и создадим для нашего будущего радара корпус.
У меня получилась вот такая конструкция.
Здесь есть дальномер.
Он установлен на специальную деталь,
которая совпадает с «качелькой» сервомашинки.
Собственно сервочка и экранчик,
на который может что-то выводиться.
Давайте теперь сделаем скетч для первого варианта радара — такой бесполезный радар,
который будет просто сканировать пространство и выводить расстояние до
объектов, которые он видит.
В этом скетче просто соединяется все,
что мы успели изучить в последние фрагменты.
Мы используем библиотеку для работы с дисплейчиком и для работы с сервомотором,
мы подключаем дальномер — эхо и триггер,
подключаем экранчик, подключаем servo.
Затем создаем объект servo,
в setup настраиваем все пины и с помощью метода
attach подключаем servo.
Что у нас будет происходить в основном цикле?
В основном
цикле просто-напросто 2 цикла
со счетчиком будут пробегать от 0 до 180 по единице,
а затем обратно, и внутри каждой итерации сервомоторчик
будет вставать в новое положение, то есть переменный
счетчик задает угол для сервомоторчика.
И будем выводить на экран то, что вернет функция measure,
которая у нас определена, как в предыдущем эксперименте.
В цикле, где счетчик идет в обратную сторону, происходит все то же самое.
Ну и функцию measure мы уже видели и разобрали в прошлый раз.
Теперь давайте посмотрим, как такой бесполезный радар будет себя вести.
Здесь перед ним стоит множество предметов,
некоторые из которых он видит хорошо, некоторые хуже.
Здесь есть отражатель, который стоит под очень странным углом.
Здесь есть штативы, у которых много узеньких деталей,
и всякие другие элементы нашего ландшафта,
расстояние до которых он сейчас выводит на дисплей.