树莓派练习程序(超声波测距)
2018-01-21 22:05
218 查看
最近弄了块树莓派,业余研究研究。
超声波模块用的是HC-SR04,一共四个引脚,如下图:
![](https://images2017.cnblogs.com/blog/340413/201801/340413-20180121215312662-1029384158.jpg)
树莓派的引脚如下图:
![](https://images2017.cnblogs.com/blog/340413/201801/340413-20180121215415787-1349434069.jpg)
我们将Vcc连接物理接口2,Trig连接物理接口38,Echo连接物理接口40,Gnd连接物理接口39。
实物连接如下图:
![](https://images2017.cnblogs.com/blog/340413/201801/340413-20180121220047553-1679649356.jpg)
编程使用WiringPi库,使用wpi引脚编码方式控制GPIO。
代码如下:
结果如下图:
![](https://images2017.cnblogs.com/blog/340413/201801/340413-20180121220205053-187793775.png)
参考:
http://blog.csdn.net/jcdjx/article/details/27313345 http://blog.csdn.net/xdw1985829/article/details/39580401/
超声波模块用的是HC-SR04,一共四个引脚,如下图:
![](https://images2017.cnblogs.com/blog/340413/201801/340413-20180121215312662-1029384158.jpg)
树莓派的引脚如下图:
![](https://images2017.cnblogs.com/blog/340413/201801/340413-20180121215415787-1349434069.jpg)
我们将Vcc连接物理接口2,Trig连接物理接口38,Echo连接物理接口40,Gnd连接物理接口39。
实物连接如下图:
![](https://images2017.cnblogs.com/blog/340413/201801/340413-20180121220047553-1679649356.jpg)
编程使用WiringPi库,使用wpi引脚编码方式控制GPIO。
代码如下:
#include <wiringPi.h> #include <stdio.h> #include <sys/time.h> #define Trig 28 #define Echo 29 void ultraInit(void) { pinMode(Echo, INPUT); pinMode(Trig, OUTPUT); } float disMeasure(void) { struct timeval tv1; struct timeval tv2; long start, stop; float dis; digitalWrite(Trig, LOW); delayMicroseconds(2); 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 * 34000 / 2; //求出距离 return dis; } int main(void) { float dis; if (wiringPiSetup() == -1) { //when initialize wiring failed,print messageto screen printf("setup wiringPi failed !"); return 1; } ultraInit(); while (1) { dis = disMeasure(); printf("distance = %0.2f cm\n", dis); delay(1000); } return 0; }
结果如下图:
![](https://images2017.cnblogs.com/blog/340413/201801/340413-20180121220205053-187793775.png)
参考:
http://blog.csdn.net/jcdjx/article/details/27313345 http://blog.csdn.net/xdw1985829/article/details/39580401/
相关文章推荐
- 树莓派练习程序(蜂鸣器)
- 树莓派练习程序(火焰检测)
- 树莓派练习程序(寻迹模块)
- 树莓派练习程序(光敏电阻)
- 树莓派练习程序(土壤湿度检测)
- 树莓派练习程序(避障模块)
- 树莓派练习程序(声音检测)
- 树莓派练习程序(温度湿度测量)
- 树莓派练习程序(雨水检测)
- Java程序练习-计算2的N次方
- Java程序练习-放球
- Java程序练习-bridging signals----最长升序列
- 练习1-14 编写一个程序,打印输入中各个字符出现频度的直方图(水平)
- 树莓派串口控制程序
- matlab练习程序(单源最短路径Dijkstra)
- 新手入门,求介绍Mac入门级练习小程序.
- matlab练习程序(生成高斯图像)
- matlab练习程序(meanshift图像聚类)
- Java程序学后小练习
- 【three.js练习程序】创建地球贴图