使用超声波传感器HC-SR04检测障碍物

HC-SR04是一种常用的超声波传感器,能够探测2-300厘米范围内的障碍物。 传感器看起来像一个小PCB,前面有两个金属圆柱,背面有一个小电路。

在本文中,我们将提供一个简单的演示来使用HC-SR04。

http://www.yiboard.com/thread-660-1-1.html

这里写图片描述

### 超声波传感器HC-SR04的技术参数 HC-SR04超声波传感器是一种基于超声波的时间差测量原理来检测目标物体距离的装置[^1]。其主要技术参数如下: - **测距范围**:该传感器能够实现2厘米至4米的有效测距,适用于多种场景下的非接触式距离测量需求[^2]。 - **工作电压**:支持较宽的工作电压区间(3伏特到5.5伏特),这使得它能适配不同的电源环境[^4]。 - **静态功耗**:具有较低的工作电流消耗特性——仅需约2.2毫安培即可正常运行[^4]。 此外,在硬件设计方面也有所改进,比如新增加了UART以及I²C通信协议的支持能力[^3]^, ^[4],这意味着除了传统的触发信号方式外还可以通过串口或者两线制总线来进行数据交互操作。 ### HC-SR04超声波传感器使用方法 对于实际应用中的连接配置而言,通常情况下需要将四个管脚按照特定规则接入开发板上对应的GPIO端口中去完成物理连线作业[^2]: | 名称 | 描述 | 对应Orange Pi GPIO | |------|--------------------------|--------------------| | VCC | 提供电力供应 | Pin 2 | | GND | 接地 | Pin 6 | | Trig | 发送触发脉冲 | Pin 5(SCL) | | Echo | 返回反射回来后的持续时间| Pin 3(SDA) | 当准备完毕之后,则应该遵循安全规范先切断供电再实施任何改动动作以防损坏器件本身;另外还需仔细核对接法准确性以免因错误而导致不可逆损害发生风险存在其中。 以下是针对STM32微控制器编写的一段用于驱动HC-SR04并获取当前前方障碍物具体位置信息的基础代码示例: ```c #include "stm32f1xx_hal.h" #define TRIG_PIN GPIO_PIN_5 #define ECHO_PIN GPIO_PIN_3 void HCSR04_Init(void){ __HAL_RCC_GPIOA_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct = {0}; /* Configure Trigger pin as output */ GPIO_InitStruct.Pin = TRIG_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /* Configure Echo pin as input */ GPIO_InitStruct.Pin = ECHO_PIN; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } float Get_Distance_cm(){ uint32_t duration_us; // Send a 10us pulse to trigger the sensor. HAL_GPIO_WritePin(GPIOA,TRIG_PIN,GPIO_PIN_SET); HAL_Delay(10); HAL_GPIO_WritePin(GPIOA,TRIG_PIN,GPIO_PIN_RESET); while(HAL_GPIO_ReadPin(GPIOA,ECHO_PIN)==GPIO_PIN_RESET){} __IO uint32_t start_time=HAL_GetTick(); while(HAL_GPIO_ReadPin(GPIOA,ECHO_PIN)==GPIO_PIN_SET){} __IO uint32_t end_time=HAL_GetTick(); duration_us=(end_time-start_time)*1000; float distance_cm=((duration_us)/58.0); return distance_cm; } ``` 此函数首先初始化两个指定引脚分别为输出与输入模式以便后续处理逻辑得以顺利执行下去;接着定义了一个名为`Get_Distance_cm()`的新函数用来计算最终结果值返回给调用者知道确切数值是多少单位为厘米形式表示出来[^3].
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值