Перейти к содержанию
Материалы раздела

О датчике

Датчик US-015 работает, передавая ультразвуковой импульс и обеспечивая выходной импульс, который соответствует времени, необходимому для возврата эха импульса к датчику. Расстояние рассчитывается путем измерения ширины импульса эха.

Скорость звука зависит от температуры окружающей среды примерно на 0,6 м/с на градус Цельсия. Для точных измерений в широком диапазоне температур используйте датчик температуры для компенсации.

Питание:

  • Напряжение питания: +5 В пост. тока

Спецификация

ЧтоКомментарии
ИдентификаторUS015
Интерфейс2 GPIOGPIO1: сигнал запуска
GPIO2: сигнал эха.
Предоставляетdistanceсм
calibration+/- см. По умолчанию установлено 0 см.
Свойстваtemperatureтекущая температура окружающей среды

Код

-- Подключить датчик к GPIO26 (TRIG) и GPIO14 (ECHO)
s = sensor.attach("US015", pio.GPIO26, pio.GPIO14)

-- Устанавливаем температуру окружающей среды на 25º для настройки скорости звука,
-- используемой внутри для расчета расстояния до
-- объекта
s:set("temperature", 25)

while true do
  print("расстояние: "..s:read("distance"))
  tmr.delayms(500)
end

Код

В этом примере датчик BME280 используется для установки температуры окружающей среды через регулярные интервалы.

-- Создать событие для синхронизации потока ping с
-- потоком temp. Мы не хотим делать первое измерение
-- до тех пор, пока поток temp не установит температуру ping
tempSet = event.create()

-- Подключить датчик к GPIO26 (TRIG) и GPIO14 (ECHO)
ping = sensor.attach("US015", pio.GPIO26, pio.GPIO14)

-- Подключить BME280 к I2C0 со значениями по умолчанию
bme = sensor.attach("BME280", i2c.I2C0, 0)

-- Поток температуры
thread.start(function()
   local temp

   -- Считать текущую температуру окружающей среды
   temp = bme:read("temperature")

   -- Установить текущую температуру для датчика ping
   ping:set("temperature", temp)

   tempSet:broadcast()

   while true do
      -- Считать текущую температуру окружающей среды
      temp = bme:read("temperature")

      -- Установить текущую температуру для датчика ping
      ping:set("temperature", temp)

      -- Считать температуру снова через 5 секунд
      tmr.sleep(5)
   end
end)

-- Поток Ping
thread.start(function()
   tempSet:wait()

   while true do
      print("расстояние: "..ping:read("distance"))

      tmr.sleepms(1000)
   end
end)

Вернуться к списку датчиков