Упрощаем замеры расстояния: ультразвуковой дальномер на ардуино

Датчик расстояния в проектах Arduino

Способность ультразвукового датчика определять расстояние до объекта основано на принципе сонара – посылая пучок ультразвука, и получая его отражение с задержкой, устройство определяет наличие объектов и расстояние до них. Ультразвуковые сигналы, генерируемые приемником, отражаясь от препятствия, возвращаются к нему через определенный промежуток времени. Именно этот временной интервал становится характеристикой помогающей определить расстояние до объекта.

Описание датчика HC SR04

Датчик расстояния Ардуино является прибором бесконтактного типа, и обеспечивает высокоточное измерение и стабильность. Диапазон дальности его измерения составляет от 2 до 400 см. На его работу не оказывает существенного воздействия электромагнитные излучения и солнечная энергия. В комплект модуля с HC SR04 arduino также входят ресивер и трансмиттер.

Ультразвуковой дальномер HC SR04 имеет такие технические параметры:

  • Питающее напряжение 5В;
  • Рабочий параметр силы т ока – 15 мА;
  • Сила тока в пассивном состоянии -6 с.

Датчик оснащен четырьмя выводами (стандарт 2, 54 мм):

  • Контакт питания положительного типа – +5В;
  • Trig (Т) – выход сигнала входа;
  • Echo (R) – вывод сигнала выхода;
  • GND – вывод «Земля».

Схема взаимодействия с Arduino

Для получения данных, необходимо выполнить такую последовательность действий:

  • Подать на выход Trig импульс длительностью 10 микросек;
  • В ультразвуковом дальномере hc sr04 подключенном к arduino произойдет преобразование сигнала в 8 импульсов с частотой 40 кГц, которые через излучатель будут посланы вперед;
  • Когда импульсы дойдут до препятствия, они отразятся от него и будут приняты приемником R, что обеспечит наличие входного сигнала на выходе Echo;
  • На стороне контроллера полученный сигнал при помощи формул следует перевести в расстояние.

При делении ширины импульса на 58.2, получим данные в сантиметрах, при делении на 148 – в дюймах.

Подключение HC SR04 к Arduino

Выполнить подключение ультразвукового датчика расстояния к плате Arduino достаточно просто. Схема подключения показана на рисунке.

Контакт земли подключаем к выводу GND на плате Arduino, выход питания соединяем с 5V. Выходы Trig и Echo подсоединяем к arduino на цифровые пины. Вариант подключения с помощью макетной платы:

Библиотека для работы с HC SR04

Для облегчения работы с датчиком расстояния HC SR04 на arduino можно использовать библиотеку NewPing. Она не имеет проблем с пинговыми доступами и добавляет некоторые новые функции.

К особенностям библиотеки можно отнести:

  • Возможность работы с различными ультразвуковыми датчиками;
  • Может работать с датчиком расстояния всего через один пин;
  • Отсутствие отставания на 1 секунду при отсутствии пинга эха;
  • Для простой коррекции ошибок есть встроенный цифровой фильтр;
  • Максимально точный расчет расстояния.

Скачать бибилотеку NewPing можно здесь

Точность измерения расстояния датчиком HC SR04

Точность датчика зависит от нескольких факторов:

  • температуры и влажности воздуха;
  • расстояния до объекта;
  • расположения относительно датчика (согласно диаграммы излучения);
  • качества исполнения элементов модуля датчика.

В основу принципа действия любого ультразвукового датчика заложено явление отражения акустических волн, распространяющихся в воздухе. Но как известно из курса физики, скорость распространения звука в воздухе зависит от свойств этого самого воздуха (в первую очередь от температуры). Датчик же, испуская волны и замеряя время до их возврата, не догадывается, в какой именно среде они будут распространяться и берет для расчетов некоторую среднюю величину. В реальных условиях из-за фактора температуры воздуха HC-SR04 может ошибаться от 1 до 3-5 см.

Фактор расстояния до объекта важен, т.к. растет вероятность отражения от соседних предметов, к тому же и сам сигнал затухает с расстоянием.

Также для повышения точности надо правильно направить датчик: сделать так, чтобы предмет был в рамках конуса диаграммы направленности. Проще говоря, “глазки” HC-SR04 должны смотреть прямо на предмет.

Для уменьшения ошибок и погрешности измерений обычно выполняются следующие действия:

  • усредняются значения (несколько раз замеряем, убираем всплески, потом находим среднее);
  • с помощью датчиков (например, DHT11 или DHT22) определяется температура и вносятся поправочные коэффициенты;
  • датчик устанавливается на серводвигатель, с помощью которого мы “поворачиваем голову”, перемещая диаграмму направленности влево или вправо.

Скетч ультразвукового дальномера на arduino с помощью HC-SR04 и TM1637

// подключение индикатора TM1637
#include <TM1637.h>
#define CLK 3
#define DIO 2 
TM1637 tm1637(CLK,DIO);

// пины для HC-SR04
int echoPin = 12; 
int trigPin = 11; 

void setup() { 
  Serial.begin (9600); // для вывода в мониторе порта
  pinMode(trigPin, OUTPUT); // пин отправки сигнала
  pinMode(echoPin, INPUT);  // пин приема сигнала

  // инициализация индикатора
  tm1637.init();
  tm1637.set(BRIGHT_TYPICAL);
} 
 
void loop() { 
  int duration, mm; // переменные для хранения расстояния
  // останавливаем отправку сигнала
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2); 
  // отправляем ультрозвуковой сигнал
  digitalWrite(trigPin, HIGH); 
  // ждем 10 микроскунд
  delayMicroseconds(10); 
  // останавливаем отправку сигнала
  digitalWrite(trigPin, LOW); 
  // замеряет длину положительного импульса на пине echoPin
  duration = pulseIn(echoPin, HIGH); 
  // высчитываем расстояние до препядствия
  mm = duration / 5.8;
  // вывод данных в монитор порта
  Serial.print(mm); 
  Serial.println(" mm"); 
  // вывод данных на индикатор
  tm1637.display( mm );
  delay(100);
}

Примеры использования датчика расстояния

Давайте рассмотрим пример простого проекта с платой Arduino Uno и датчиком расстояния HC SR04. В скетче мы будем получать значение расстояния до предметов и выводить их в монитор порта в среде Arduino IDE. Вы сможете легко изменить скетч и схему подключения, чтобы датчик сигнализировал о приближении или отдалении предмета.

Подключение датчика к ардуино

При написании скетча использовалась следующий вариант распиновки подключения датчика:

  • VCC: +5V
  • Trig – 12 пин
  • Echo – 11 пин
  • Земля (GND) – Земля (GND)

Пример скетча

Начнем работу с датчиком сразу с относительного сложного варианта – без использования внешних библиотек.

В данном скетче мы выполняем такую последовательность действий:

  • Коротким импульсом (2-5 микросекунды) переводим датчик расстояния в режим эхолокации, при котором в окружающее пространство высылаются ультразвуковые волны с частотой 40 КГц.
  • Ждем, пока датчик проанализирует отраженные сигналы и по задержке определит расстояние.
  • Получаем значение расстояния. Для этого ждем, пока HC SR04 выдаст на входе ECHO импульс, пропорциональный расстоянию. Мы определяем длительность импульса с помощью функции pulseIn, которая вернет нам время, прошедшее до изменения уровня сигнала (в нашем случае, до появления обратного фронта импульса).
  • Получив время, мы переводим его в расстояние в сантиметрах путем деления значения на константу (для датчика SR04 это 29.1 для сигнала «туда», столько же для сигнала «обратно», что в сумме даст 58.2).

Если датчик расстояния не выполняет считывание сигнала, то преобразование выходного сигнала никогда не примет значения короткого импульса – LOW. Так как у некоторых датчиков время задержки варьируется в зависимости от производителя, рекомендуется при использовании указанных скетчей выставлять его значение вручную (мы это делаем в начале цикла).

Если расстояние составляет более 3 метров, при котором HC SR04 начинает плохо работать, время задержки лучше выставлять более 20 мс, т.е. 25 или 30 мс.

Скетч с использованием библиотеки NewPing

Теперь давайте рассмотрим вариант скетча с использованием библиотеки NewPing. Код существенно упростится, т.к. все описанные ранее действия спрятаны внутри библиотеки. Все, что нам нужно сделать – создать объект класса NewPing, указав пины, с помощью которых мы подключаем датчик расстояния и использовать методы объекта. В нашем примере для получения расстояния в сантиметрах нужно использовать ping_cm().

Пример подключения ультразвукового дальномера HC SR04 с одним пином

Подключение HC-SR04 к Arduino может быть выполнено посредством использования одного пина. Такой вариант пригодится, если вы работаете с большим проектом и вам не хватает свободных пинов. Для подключения вам нужно просто установить между контактами TRIGи ECHO резистор номиналом 2.2K и подключить к ардуино контакт TRIG.

Ультразвуковой дальномер Arduino HC-SR04

Ультразвуковой датчик (ещё его часто называют сонаром или ультразвуковым дальномером) определяет расстояние до объекта так же, как это делают летучие мыши или дельфины. Датчик HC-SR04 генерирует узконаправленный сигнал на частоте 40 кГц и ловит отраженный сигнал (эхо). По времени распространения звука до объекта и обратно можно достаточно точно определить расстояние до него.

По этому же принципу работает множество приборов для исследования пространства — эхолот, сонар, радиолокатор и даже полицейский радар для определения скорости автомобиля. Все эти приборы излучают узконаправленный ультразвуковой сигнал и получают обратно отраженный сигнал. В отличии от инфракрасных дальномеров (IR), на показания ультразвукового датчика (сонара) не влияет цвет объекта.


Принцип работы ультразвукового дальномера HC-SR04

Но при настройке ультразвукового датчика на Ардуино могут возникнуть трудности с определением расстояния до звукопоглощающих объектов, поскольку они способны полностью погасить излучаемый сигнал. Для идеальной точности измерения расстояния, поверхность изучаемого объекта должна быть ровной и гладкой. Принцип работы ультразвукового датчика hc-sr04 показан на рисунке выше.

Принцип действия

На этот раз мы разберем работу одного из самых популярных датчиков — ультразвукового (УЗ) дальномера. Существует много разных модификаций подобных устройств, но все они работают по принципу измерения времени прохождения отраженного звука. То есть датчик отправляет звуковой сигнал в заданном направлении, затем ловит отраженное эхо и вычисляет время полета звука от датчика до препятствия и обратно.

Из школьного курса физики мы знаем, что скорость звука в некоторой среде величина постоянная, но зависящая от плотности среды. Зная скорость звука в воздухе и время полета звука до цели, мы можем рассчитать пройденное звуком расстояние по формуле:

где v — скорость звука в м/с, а t — время в секундах. Скорость звука в воздухе, кстати, равна 340.29 м/с.

Чтобы справиться со своей задачей, дальномер имеет две важные конструктивные особенности. Во-первых, чтобы звук хорошо отражался от препятствий, датчик испускает ультразвук с частотой 40 кГц. Для этого в датчике имеется пьезокерамический излучатель, который способен генерировать звук такой высокой частоты. Во-вторых, излучатель устроен таким образом, что звук распространяется не во все стороны (как это бывает у обычных динамиков), а в узком направлении. На рисунке представлена диаграмма направленности типичного УЗ дальномера.

Как видно на диаграмме, угол обзора самого простого УЗ дальномера составляет примерно 50-60 градусов. Для типичного варианта использования, когда датчик детектирует препятствия перед собой, такой угол обзора вполне пригоден. Ультразвук сможет обнаружить даже ножку стула, тогда как лазерный дальномер, к примеру, может её не заметить.

Если же мы решим сканировать окружающее пространство, вращая дальномер по кругу как радар, УЗ дальномер даст нам очень неточную и шумную картину. Для таких целей лучше использовать как раз лазерный дальномер.

Также следует отметить два серьезных недостатка УЗ дальномера. Первый заключается в том, что поверхности имеющие пористую структуру хорошо поглощают ультразвук, и датчик не может измерить расстояние до них. Например, если мы задумаем измерить расстояние от мультикоптера до поверхности поля с высокой травой, то скорее всего получим очень нечеткие данные. Такие же проблемы нас ждут при измерении дистанции до стены покрытой поролоном.

Второй недостаток связан со скоростью звуковой волны. Эта скорость недостаточно высока, чтобы сделать процесс измерения более частым. Допустим, перед роботом есть препятствие на удалении 4 метра. Чтобы звук слетал туда и обратно, потребуется целых 24 мс. Следует 7 раз отмерить, прежде чем ставить УЗ дальномер на летающих роботов.

Выбор дальномера для подключения к arduino

Для определения расстояния есть несколько способов – инфракрасный датчик приближения, лазерный дальномер и ультразвуковой дальномер. Возможно, есть еще какие-то варианты, но я их сходу не нашел. Поэтому выбирал из трех вариантов. Датчик приближения был сразу забракован, поскольку он не умеет измерять, а только настраивается на определение конкретных расстояний. Лазерный датчик умеет делать измерения и довольно точно, но стоит он не мало, из-за этого выбор был остановлен на ультразвуковом датчике, который стоит в 8-10 раз дешевле лазерного, а точность измерения отличается не на много.
Очевидно, что выбор пал на более дешевый датчик HC-SR04, который стоит 50 руб и способен измерять расстояние от 2 до 400 см с точностью до 3 мм, а эффективный угол наблюдения 15 градусов.

Программирование ультразвукового датчика HC-SR04

#define

Trig 8 /* Обозначаем пин подачи импульса*/

#define

Echo 9 /* Обозначаем пин приема импульса*/

void

setup() {

pinMode

(Trig, OUTPUT); /*инициируем как выход */

pinMode

(Echo, INPUT); /*инициируем как вход */

Serial.begin

(9600); /* устанавливаем скорость порта */

}

unsigned int

impulseTime=0;

unsigned int

distance_sm=0;

void

loop() {

digitalWrite

(Trig, HIGH);
/* Подаем импульс на вход trig дальномера */

delayMicroseconds

(10); /* Импульс длится 10 микросекунд */

digitalWrite

(Trig, LOW); // Отключаем подачу импульса

impulseTime=pulseIn

(Echo, HIGH);
/*Принимаем импульс и подсчитываем его длину*/

distance_sm

=impulseTime/58; /* Пересчитываем его значение в сантиметры */

Serial.println(
distance_sm); /* Выводим значение на порт программы */

delay

(200);

}

После того как вы вставили этот код, загрузите его в программу и включите “монитор порта”.
Там вы увидите расстояние от датчика до препятствия, поэкспериментируйте с изменением расстояния объекта.

Вот что должно у вас получиться!

Надеюсь у вас все получилось! Если у вас остались вопросы,
можете написать нам в

На фотографии не видно, но выходы Trig
и Echo
подключены ко 2 и 3 выходу Arduino соответственно. Ну а VCC
и GND
– 5v и земля.

После успешного подключения можно быстро набросать код, который будет высчитывать расстояние в сантиметрах. Код прокомментирован, так что вопросов быть не должно.

// задаем пины
int echoPin = 2;
int trigPin = 3;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// отключаем подачу импульса
digitalWrite(trigPin, LOW);
}
void loop() {
int duration, cm;
// подаем импульс
digitalWrite(trigPin, HIGH);
// ждем 10 микросекунд
delayMicroseconds(10);
// отключаем подачу импульса
digitalWrite(trigPin, LOW);
// считываем длину сигнала
duration = pulseIn(echoPin, HIGH);
// пересчитываем в сантиметры
Serial.print(duration / 58);
Serial.println(” cm”);
// ждем пол секунды до следующего измерения
delay(500);
}

Подключается по данной схеме

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

Если вам вдруг понадобятся миллиметры или дюймы, то это можно легко исправить, переписав в коде пару строк примерно на следующие:

Но у нас получается слишком много кода, а если нам потребуется подключить 2 таких дальномера? А если 10? В таком случае разработка превратится в рутину, а в случае какой-то ошибки придется менять все сразу.

Именно здесь нам на помощь приходит библиотека Ultrasonic .

Используя ее, весь прошлый код можно написать следующим образом:

Предисловие

Так получилось, что в университете я изучаю C/C++. Для души пробую делать небольшие проекты на Python. Я много слышал про платформу Arduino, смотрел видео на YouTube, частенько посещал Arduino Project Hub и вот мне стало интересно самому поэкспериментировать, углубясь в разработку под микроконтроллеры. Купив стартовый набор с самой платой и горстью электронных компонентов и попробовав собрать проекты из обучающей брошюры, понял, что надо двигаться дальше. Продумав саму идею следующей самоделки, отправился на просторы Google и обнаружил, что не могу найти всего, что мне нужно на одном ресурсе. Безусловно, мне несложно было посетить несколько сайтитов и блогов с информацией, но я бы сильно сэкономил время, если бы нашел все в одном месте. Так и появилась эта статья-туториал.

Как подключить ультразвуковой датчик к Ардуино

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • макетная плата;
  • УЗ дальномер HC-SR04;
  • 1 светодиод и резистор 220 Ом;
  • провода «папа-папа» и «папа-мама».

Схема подключения ультразвукового датчика к Arduino Uno

Схема подключения указана на рисунке выше. Отметим, что ультразвуковой дальномер HC-SR04 имеет диапазон измерения от 2 см до 400 см, работает при температурах от 0° до 60° С. Точность измерения составляет ± 1 см, рабочее напряжение датчика до 5,5 В. Для начала мы используем простой скетч, без использования библиотеки Ultrasonic. После подключения к Arduino дальномера HC-SR04 загрузите следующий скетч:

Скетч для подключения датчика hc-sr04 к Arduino

int trigPin = 8; // назначаем имя для Pin8
int echoPin = 9; // назначаем имя для Pin9
 
void setup() { 
  Serial.begin (9600); // подключаем монитор порта
  pinMode(trigPin, OUTPUT); // назначаем trigPin (Pin8), как выход
  pinMode(echoPin, INPUT); // назначаем echoPin (Pin9), как вход
} 
 
void loop() { 
  int duration, cm; // назначаем переменную "cm" и "duration" для показаний датчика
  digitalWrite(trigPin, LOW); // изначально датчик не посылает сигнал
  delayMicroseconds(2); // ставим задержку в 2 ммикросекунд

  digitalWrite(trigPin, HIGH); // посылаем сигнал
  delayMicroseconds(10); // ставим задержку в 10 микросекунд
  digitalWrite(trigPin, LOW); // выключаем сигнал

  duration = pulseIn(echoPin, HIGH); // включаем прием сигнала

  cm = duration / 58; // вычисляем расстояние в сантиметрах

  Serial.print(cm); // выводим расстояние в сантиметрах
  Serial.println(" cm");

  delay(1000); // ставим паузу в 1 секунду
}

Пояснения к коду:

  1. для подключения выходов Trig и Echo на датчике сонара Ардуино можно использовать любые цифровые входы на микроконтроллере;
  2. чтобы получить значение датчика в миллиметрах следует использовать следующую формулу для расчета: .

Суть проекта

Мне хотелось сделать дальномер. Во-первых, из-за того, что у меня был ультразвуковой датчик и надо было научиться с ним взаимодействовать. Во-вторых, я хотел выводить всю информацию на OLED-дисплей. В статьях, которые я находил, либо рассказывалось про работу с дисплеем и датчиком по отдельности, либо они являлись частью совершенно другого проекта. Я собрал все необходимое тут и надеюсь, что это сможет как-то помочь другим.

Что понадобится?

  • Любая плата Arduino (у меня Uno);

  • Ультразвуковой дальномер HC-SR04;

  • OLED-дисплей на 0,96 дюймов;

  • Соединительные провода;

  • Макетная плата.

Ультразвуковой датчик и светодиод Ардуино

Представленный скетч работает без библиотеки, поэтому в коде многовато строчек. Мы воспользуемся библиотекой для ультразвуковых дальномеров, что позволит нам значительно упростить скетч. Для начала установите библиотеку Ultrasonic (инструкция по установке библиотек в Arduino IDE) и загрузите следующую программу в Ардуино. Ссылка на скачивание архива со скетчами и библиотекой Ultrasonic.h — здесь.

Подключите дополнительно к плате RGB светодиод или несколько светодиодов, для создания мини проекта. Цвета светодиода будут переключаться, в зависимости от расстояния от датчика расстояния до предмета. Для управления светодиодами от УЗ датчика в программе используется условные операторы if. После сборки схемы, как на картинке выше, загрузите в микроконтроллер следующую программу.

Скетч с использованием библиотеки Ultrasonic.h

#include <Ultrasonic.h>    // подключаем библиотеку Ultrasonic
Ultrasonic ultrasonic(8,9); // назначаем выходы для Trig и Echo
 
void setup() {
  Serial.begin(9600);        // подключаем монитор порта
  pinMode (11, OUTPUT); // подключаем к пину светодиод
  pinMode (12, OUTPUT); // подключаем к пину светодиод
}

void loop () {
  int dist = ultrasonic.Ranging(CM);
  Serial.print(dist);     // выводим расстояние в сантиметрах
  Serial.println(" cm");

  // переключаем цвета светодиода
  if (dist < 50) {digitalWrite(12,0); digitalWrite(11,1);}
  if (dist < 50) {digitalWrite(12,1); digitalWrite(11,0);}

  delay(100);
}

Пояснения к коду:

  1. команда  назначает имя для нашего датчика «ultrasonic» и назначаем выходы на Ардуино для Trig и Echo.
  2. расстояние при котором будут переключаться светодиоды можно изменить.

Подключение HC-SR04

Датчик HC-SR04 имеет четыре вывода. Кроме земли (Gnd) и питания (Vcc) еще есть Trig и Echo. Оба этих вывода цифровые, так что подключаем из к любым выводам Ардуино Уно:

HC-SR04GNDVCCTrigEcho
Arduino UnoGND+5V32

Принципиальная схема устройства Ардуино: ультразвуковой дальномер HC-SR04 : 6 комментариев

«Датчик HC-SR04 имеет четыре вывода. Кроме земли (Gnd) и питания (Vcc) еще есть Trig и Echo. Оба этих вывода цифровые, так что подключаем из к любым выводам Ардуино Уно:

OLED дисплей 128×64 GND VCC Trig Echo Arduino Uno GND +5V 3 2»

-Что-то здесь не так…..не так-ли?

В точку! Исправлено:)

Просто и понятно все объяснено. Автору большое спасибо.

Автор у Вас опечатка в статье.

Переводим скорость звука из м/с в см/мкс:

s = duration * 0.034 м/мкс

В единице измерения допущена неточность. Вы же в см/мкс переводите, а не м/мкс (как у Вас)

всё сделал, но в мониторе порта пишет следующее (x⸮x⸮⸮⸮x⸮x⸮⸮⸮x⸮x⸮⸮⸮x⸮), что делать, как быть?))

Проверьте скорость передачи в мониторе последовательного порта. Она должна совпадать со скоростью в программе. Должно быть: 9600

Работа с OLED-дисплеем

OLED-дисплей идеально подходит для DIY-устройств. Во-первых, мы имеем достаточно высокое разрешение экрана — 128×64 пикселя. Во-вторых, дисплей работает без модуля подсветки, что обеспечивает низкое потребление энергии. В-третьих, для подключения используется всего четыре разъема — два для питания и два для обмена информацией. Но несмотря на это, у OLED-дисплеев есть и минусы. Со временем пиксели могут тускнеть и перегорать.

Вот таким образом можно подключить дисплей:

Схема подключения

Есть несколько библиотек для работы с OLED-дисплеями, мне больше нравится OLED_I2C. Мне она кажется очень простой и максимально понятной. Следующим образом выведем классический «Hello, world!» на дисплей:

Если функции без параметров понятны сразу и не вызывают вопросов, то с функциями вывода на дисплей могут быть вопросы. Давайте сразу с ними разберемся, их существует всего три вида:

  • print(st, x, y) — печать строки на дисплей.Параметры: st: строка для печати; x: координата верхнего левого угла первого символа по горизонтали; y: координата верхнего левого угла первого символа по вертикали.В качестве координат можно использовать как сами координаты, так и литералы LEFT, CENTER, RIGHT.

  • printNumI(num, x, y, ]) — печать целого числа на дисплей.Параметры: num: Число для вывода на экран (от -2147483648 до 2147483647); x: координата верхнего левого угла первой цифры/знака по горизонтали; y: координата верхнего левого угла первой цифры/знака по вертикали; length: <необязательный параметр> минимальное количество цифр для отображения на экране; filler: <необязательный параметр> Символ для заполнения, чтобы получить минимальную длину. По умолчанию “ “.В качестве координат можно использовать как сами координаты, так и литералы LEFT, CENTER, RIGHT.

  • printNumF(num, dec, x, y, ]]) — печать числа с плавающей точкой на дисплей.Параметры:num: Число для вывода на экран (от -2147483648 до 2147483647);dec: количество цифр после запятой (в дробной части) (допустимые значения 1-5);x: координата верхнего левого угла первой цифры/знака по горизонтали;y: координата верхнего левого угла первой цифры/знака по вертикали;divider: <необязательный параметр> Одиночный символ для использования в качестве десятичной точки. По умолчанию ‘.’;length: <необязательный параметр> минимальное количество цифр для отображения на экране;filler: <необязательный параметр> Символ для заполнения, чтобы получить минимальную длину. По умолчанию “ “.В качестве координат можно использовать как сами координаты, так и литералы LEFT, CENTER, RIGHT.

Краткие выводы

Ультразвуковые датчики расстояния достаточно универсальны и точны, что позволяет их использовать для большинства любительских проектов. В статье рассмотрен крайне популярный датчик HC SR04, который легко подключается к плате ардуино (для этого следует сразу предусмотреть два свободных пина, но есть вариант подключения и с одним пином). Для работы с датчиком существуют несколько бесплатных библиотек (в статье рассмотрена лишь одна из них, NewPing), но можно обойтись и без них – алгоритм взаимодействия с внутренним контроллером датчика достаточно прост, мы показали его в этой статье.

Исходя из собственного опыта, можно утверждать, что датчик HC-SR04 показывает точность в пределах одного сантиметра на расстояниях от 10 см до 2 м. На более коротких и дальних дистанциях возможно появление сильных помех, что сильно зависит от окружающих предметов и способа использования. Но в большинстве случаев HC-SR04 отлично справлялся со своей работой.

“>

Поделитесь в социальных сетях:FacebookXВКонтакте
Напишите комментарий