dirty123 发表于 2024-4-16 22:35:29

【树莓派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]
查看完整版本: 【树莓派5 测评】--7.超声波模块测距

Baidu
map