TA的每日心情 | 奋斗 前天 11:38 |
---|
签到天数: 19 天 连续签到: 1 天 [LV.4]偶尔看看III
|
本帖最后由 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测距离功能。
|
|