#嵌入式系统 #温湿度 #hc-sr04

无需std gihex-hc-sr04

用于访问HC-SR04超声波传感器的库

3个版本

0.1.5 2023年11月4日
0.1.4 2023年11月4日
0.1.3 2023年11月4日
0.1.2 2023年11月4日
0.1.1 2023年11月4日

#376嵌入式开发

每月 24 次下载

MIT 许可证

15KB
162

Gihex HC-SR04

Continuous integration GitHub Crates.io Released API docs GitHub issues

简介

这是一个用于访问HC-SR04超声波传感器的库。这个库受到 hc-sr04 的启发。
有关如何使用此库的更多详细信息,请参阅 示例

功能

  • 测量距离。
  • 获取最后返回超声波波形的持续时间
  • 设置环境温度进行补偿。仅在启用功能 temperaturehumidity 时可用。
  • 设置环境湿度进行补偿。仅在启用功能 humidity 时可用。

如何使用?

要使用此库,必须执行以下操作,例如

  • 使用 RAISINGFAILING 触发器实现外部中断 (EXTI) 到引脚 echo(连接到HC-SR04传感器引脚的微控制器引脚)。
let mut echo_pin = gpioa.pa3.into_pull_down_input(&mut gpioa.crl);
echo_pin.make_interrupt_source(&mut afio);
let mut exti = ctx.device.EXTI;
echo_pin.enable_interrupt(&mut exti);
echo_pin.trigger_on_edge(&mut exti, Edge::RisingFalling);
  • 创建一个实现 us_timer::TickerUs 特性的对象。此对象用于计数滴答数。
use stm32f1xx_hal::timer::{CounterUs, Instance};
pub struct MyCounter<TIM> {
    counter: CounterUs<TIM>,
}

impl<TIM: Instance> MyCounter<TIM> {
    fn new(counter: CounterUs<TIM>) -> Self {
        Self { counter }
    }
}

impl<TIM: Instance> TickerUs for MyCounter<TIM> {
    fn get_tick(&self) -> u32 {
        self.counter.now().ticks()
    }

    fn get_frequency(&self) -> u32 {
        1_000_000
    }
}
  • 创建HC-SR04对象并使用它。
let hcsr04 = HcSR04::hc_sr04_new(trig_pin, &mut delay, &mut my_counter);
let distance=hcsr04.get_distance::<f32>(DistanceUnit::MilliMeter);

依赖项

~225KB