[评测分享]
【树莓派5 测评】--7.超声波模块测距
#板卡评测
 
2424 人阅读
|
0 人回复
|
2024-04-16 
 
 
 
 
TA的每日心情  | 奋斗 2025-8-10 16:22 | 
|---|
 
  签到天数: 36 天 连续签到: 1 天 [LV.5]常住居民I 
举人 
 
 
	- 积分
 - 949
 
 
 
 
 | 
 
 
 本帖最后由 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测距离功能。 
 
 
 |   
 
  
  
  
 
 
 | 
| 
 | 
| 
 | 
| 
 | 
 |