回答

收藏

[评测分享] 【树莓派5 测评】--7.超声波模块测距

#板卡评测 #板卡评测 2424 人阅读 | 0 人回复 | 2024-04-16

本帖最后由 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.引脚定义与初始化
  1. #define Trig 24
  2. #define Echo 25

  3. void ultrasonic_range_Init()
  4. {
  5.         pinMode(Echo ,INPUT);
  6.         pinMode(Trig,OUTPUT);
  7. }
复制代码
2.测距函数
  1. float disMeasure()
  2. {
  3.         struct timeval tv1;
  4.         struct timeval tv2;
  5.         long start;
  6.         long stop;
  7.         float dis;

  8.         digitalWrite(Trig,LOW);
  9.         delayMicroseconds(4);
  10.         digitalWrite(Trig,HIGH);
  11.         delayMicroseconds(10);
  12.         digitalWrite(Trig,LOW);

  13.         while(!(digitalRead(Echo)==1));
  14.         gettimeofday(&tv1,NULL);

  15.         while(!(digitalRead(Echo)== 0));
  16.         gettimeofday(&tv2,NULL);
  17.         start = tv1.tv_sec * 1000000 + tv1.tv_usec,
  18.         stop =tv2.tv_sec * 1000000 + tv2.tv_usec;
  19.         dis =(float)(stop -start)/1000000*3400/2;
  20.         return dis;
  21. }
复制代码
3.打印、显示距离
      前面有做oled显示,这把超声波测距功能集成上去,通过宏ULTRASONIC_RANGE_USE决定是否使用,这里置1。

图2:传感器工程

三.编译运行
      可以编辑make.sh,在里面添加编译源文件如下 ,然后保存
图3:脚本修改

      用sh ./make.sh编译,再./oled运行,如下
图4:编译运行

      可以看到oled显示屏测距离栏有相应测距结果,如下
图5:测距显示


      至此,实现树莓派5驱动超声波模块HC-SR04测距离功能。


分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

高级嵌入式软件工程师
949 积分
9 主题
+ 关注
热门推荐
关闭

站长推荐上一条 /3 下一条