МЫ СОЗДАЕМ И ПРОИЗВОДИМ
ЭЛЕКТРОННЫЕ НАБОРЫ И МОДУЛИ
Библиотека для получения расстояния до объекта с помощью ультразвуковых датчиков семейства HC-SR04.
Библиотека отправляет стартовый импульс датчику, а время ответа преобразует в расстояние. Посылка и приём импульсов происходит через аппаратный таймер — Timer2
, поэтому выполнение кода скетча не приостанавливается на время ожидания сигнала ответа от датчика, которое может достигать 38 мс.
Посылка и приём импульсов происходит через аппаратный таймер — Timer2
.
3
и 11
Timer2
.Если ограничения данной библиотеки вас не устраивают, воспользуйтесь другими нашими библиотеками:
iarduino_HC_SR04
: ожидает ответ от датчика в режиме реального времени.
iarduino_HC_SR04_int
: использует внешнее прерывание и не будет ждать ответа от датчика.
Для старта скачайте и установите библиотеку iarduino_HC_SR04_tmr
. Для инсталляции рекомендуем использовать нашу инструкцию по установке библиотек для Arduino.
#include <iarduino_HC_SR04_tmr.h>
// Подключаем библиотеку для работы с дальномером HC-SR04 #include <iarduino_HC_SR04_tmr.h>
iarduino_HC_SR04_tmr
iarduino_HC_SR04_tmr sensor(uint8_t pinTRIG, uint8_t pinECHO)
pinTRIG
: пин отправки сигнала с дальномера на внешний контроллер.pinECHO
: пин приёма сигнала с внешнего контроллера на дальномер.// Создаём объект sensor для работы с функциями библиотеки iarduino_HC_SR04_tmr // В параметре конструктора передаём пины TRIG и ECHO iarduino_HC_SR04_tmr sensor(12, 11);
void begin(uint16_t time = 50)
time
: период опроса датчика от 50
до 3000
мс. Необязательный параметр и по умолчанию равен 50
мс.setup()
.// Инициируем работу с датчиком // Период опроса датчика оставляем по умолчанию 50 мс sensor.begin();
// Инициируем работу с датчиком // Период опроса датчика устанавливаем 1000 мс sensor.begin(1000);
void work(bool state)
state
:
true
: включает опрос датчикаfalse
: выключает опрос датчикаwork()
позволяет опрашивать несколько дальномеров поочереди, предотвратив пересечение их звуковых волн.// Включаем опрос датчика sensor.work(true);
// Выключаем опрос датчика sensor.work(false);
long distance(int8_t temperature = 23)
temperature
: температура окружающей среды от -128
до 127
°C. Необязательный параметр и по умолчанию равен 23
°C.3
до 400
см.// Вычисляем расстояние до объекта // Температуру окружающей оставляем по умолчанию 23 °C int sensorDistance = sensor.distance();
// Вычисляем расстояние до объекта // с указанием температуры окружающей среды 70 °C int sensorDistance = sensor.distance(70);
averaging
0
до 1000
0
: бех усреднений10
: минимальное усреднение100
: нормальное усреднение1000
: сильное усреднение200
см до препятствия, показания могут колебаться от 198
до 202
. Это может быть причиной следующих факторов: геометрия отражающей поверхности, колебания температуры воздуха, колебания питания датчика, посторонние шумы и многое другое. Для устранения помех можно указать коэффициент усреднения: чем выше значение коэффициента, тем плавнее будут меняться данные возвращаемые функцией distance()
.// Указываем коэффициент усреднения 15 sensor.averaging = 15;