【树莓派5 测评】--7.超声波模块测距
本帖最后由 dirty123 于 2024-4-16 22:54 编辑本篇讲述是树莓派5驱动超声波模块HC-SR04测距离。
一.硬件原理准备
超声波模块模块由超声波***、接收器与控制电路组成,其通过超声波从发射到返回的时间 来计算距离。
图1:超声波模块
超声波模块HC-SR04有四个引脚:VCC 供 5V电源 , GND 为地线 ,TRIG 触 发 控 制 信 号 输入, ECHO 回响信号输出。模块灵敏度、感应角度等可通过硬件修改电阻调 校。
模块与开发板连接情况
HC-SR04 树莓派5
VCC 5V
TRIG GPIO24
ECHO GPIO25
Gnd 0V
二.代码准备
1.引脚定义与初始化
#define Trig 24
#define Echo 25
void ultrasonic_range_Init()
{
pinMode(Echo ,INPUT);
pinMode(Trig,OUTPUT);
}2.测距函数
float disMeasure()
{
struct timeval tv1;
struct timeval tv2;
long start;
long stop;
float dis;
digitalWrite(Trig,LOW);
delayMicroseconds(4);
digitalWrite(Trig,HIGH);
delayMicroseconds(10);
digitalWrite(Trig,LOW);
while(!(digitalRead(Echo)==1));
gettimeofday(&tv1,NULL);
while(!(digitalRead(Echo)== 0));
gettimeofday(&tv2,NULL);
start = tv1.tv_sec * 1000000 + tv1.tv_usec,
stop =tv2.tv_sec * 1000000 + tv2.tv_usec;
dis =(float)(stop -start)/1000000*3400/2;
return dis;
}3.打印、显示距离
前面有做oled显示,这把超声波测距功能集成上去,通过宏ULTRASONIC_RANGE_USE决定是否使用,这里置1。
图2:传感器工程
三.编译运行
可以编辑make.sh,在里面添加编译源文件如下 ,然后保存
图3:脚本修改
用sh ./make.sh编译,再./oled运行,如下
图4:编译运行
可以看到oled显示屏测距离栏有相应测距结果,如下
图5:测距显示
至此,实现树莓派5驱动超声波模块HC-SR04测距离功能。
页:
[1]