О датчике
Этот датчик обеспечивает точные бесконтактные измерения расстояния от примерно 2 см до 3 метров.
Датчик PING))) работает, передавая ультразвуковой импульс и обеспечивая выходной импульс, который соответствует времени, необходимому для возврата эха импульса к датчику. Расстояние рассчитывается путем измерения ширины импульса эха.
Скорость звука зависит от температуры окружающей среды примерно на 0,6 м/с на градус Цельсия. Для точных измерений в широком диапазоне температур используйте датчик температуры для компенсации.
Питание:
- Напряжение питания: +5 В пост. тока
- Ток питания: 30 мА тип; 35 мА макс
Спецификация
| Что | Комментарии | |
|---|---|---|
| Идентификатор | PING28015 | ![]() |
| Интерфейс | GPIO | 1 пин |
| Предоставляет | distance | см |
| calibration | +/- см. По умолчанию установлено -0,6049 см. | |
| Свойства | temperature | текущая температура окружающей среды |
| Техническое описание |
Код
-- Подключить датчик к GPIO26
s = sensor.attach("PING28015", pio.GPIO26)
-- Сообщаем PING28015, что температура окружающей среды составляет 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
ping = sensor.attach("PING28015", pio.GPIO26)
-- Подключить 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)
-- Считать температуру снова через 10 секунд
tmr.sleep(5)
end
end)
-- Поток Ping
thread.start(function()
tempSet:wait()
while true do
print("расстояние: "..ping:read("distance"))
tmr.sleepms(500)
end
end)
