用料
示例
HC-SR04 是一种利用超声波测量距离的模块。它的外形酷似一双眼睛,因此经常被安装在机器人车辆或机械虫子上,成为它们的眼睛。它的工作原理是,首先将 TRIG 引脚 "拨高"(即先拉高再拉低)。HC-SR04 会发送 8 个 40kHz 的声波信号,并将 ECHO 引脚拉高。当声波返回时,将 ECHO 引脚拉低。
假设声速为 340 米/秒,则声音在空气中前进 1 厘米所需的时间为 340*100*10^-6 = 29 秒。
声波传播的距离是 HC-SR04 和物体之间距离的两倍,因此距离可以用 (time/29) / 2 = time / 58 计算。
HC-SR04 的工作电压为 5V。当我们将 ECHO 引脚拉高到 5V 时,该电压可能会损坏 BW21-CBV-Kit 的 GPIO 引脚。为避免出现这种情况,我们需要按如下步骤降低电压:
BW21-CBV-Kit 接线图:
我们选择阻值为 1:2 的电阻器,任何阻值都可以,但不建议使用过高的阻值。如果手头没有电阻器,可以使用电平转换器代替:
BW21-CBV-Kit 接线图+电阻器:
然后,在 "文件"->"示例"->"AmebaGPIO"->"HCSR04_Ultrasonic "中打开示例代码。
编译并上传到 BW21-CBV-Kit,然后按下重置按钮。打开串行监视器,计算结果每 2 秒钟输出到串行监视器。
请注意,HCSR04 模块使用声波的反射来计算距离,因此计算结果可能会受到物体表面材料的影响(例如,粗糙的表面容易导致声波散射,而柔软的表面则可能导致声波被吸收)。
代码参考
测量开始前,我们需要将 TRIG 引脚拉高 10us 然后拉低。这样做的目的是告诉 HC-SR04 我们即将开始测量:
digitalWrite(trigger_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trigger_pin, LOW);
接下来,使用 pulseIn 测量 ECHO 引脚拉高的时间。
duration = pulseIn (echo_pin, HIGH);
最后,使用公式计算距离。
distance = duration / 58;
|