О датчике
Датчик US-015 работает, передавая ультразвуковой импульс и обеспечивая выходной импульс, который соответствует времени, необходимому для возврата эха импульса к датчику. Расстояние рассчитывается путем измерения ширины импульса эха.
Скорость звука зависит от температуры окружающей среды примерно на 0,6 м/с на градус Цельсия. Для точных измерений в широком диапазоне температур используйте датчик температуры для компенсации.
Питание:
- Напряжение питания: +5 В пост. тока
Спецификация
| Что | Комментарии | |
|---|---|---|
| Идентификатор | US015 | ![]() |
| Интерфейс | 2 GPIO | GPIO1: сигнал запуска 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)
