树莓派之超声波测距的实现
一、首先来进行对超声波模块进行简单的介绍
超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收,电路板上有4个引脚,分别是VCC(正极),Trig(触发),Echo(回应),Gnd(接地即0V),主要的参数如下:
工作电压与电流:5V,15mA
感测距离:2-400cm
感测角度:不大于15°
被测物的面积不要小于50cm2,并且尽量平整
具备温度补偿电路
在超声波模块的触发脚位输入10微秒以上的高电位,即可发射超声波,发射超声波之后,与接收到传回的超声波之前,”响应“脚位呈现高电位,因此,程序可以从响应脚位的高电位的脉冲的持续时间,换算出被测物的距离。
原理图解读:
触发信号(Trig):我们从图中可以看出这个引脚有一个持续10微秒的高电平,从而激发T发波
模块内部发出的信号:这个就是Trig所发出的波的具体形状
输出回响信号(Echo):在Trig引脚发波的过程中,Echo一直维持高电平状态,从而得出波在空气中跑的时间
接线解读:
VCC:接5V
Gnd:接0V(即接地)
Trig和Echo接树莓派的gpio口,自定义接
二、编程相关的函数的解读
a.struct timeval
结构体
a.1 struct timeval
是linux系统中关于时间的一个系统内部结构体,在头文件“time.h”
中,原型是:
struct timeval
{
__time_t tv_sec; /* Seconds. */
__suseconds_t tv_usec; /* Microseconds.*/
};
tv_sec
|
秒 |
---|---|
tv_usec
|
微秒 |
b.函数gettimeofday
头文件:#include <sys/time.h>
函数原型:
int gettimeofday(struct timeval *tv, struct timezone *tz);
struct time *tv
|
存放的是上面时间结构体的地址 |
---|---|
struct timezone *tz
|
得到当前的时区,一般设置为NULL
|
c.延时函数
delay(ms)
|
毫秒级延时函数 |
---|---|
delayMicroseconds(us)
|
微秒级延时函数 |
时间的换算:
1s = 1000 ms
1 ms = 1000 us
1s = 1000000 us
三、直接上编程实例
#include <stdio.h>
#include <wiringPi.h>
#include <time.h> //结构体struct timeval的头文件
#include <sys/time.h> //函数gettimeofday的头文件#define Trig 7
#define Echo 0void UItraInit()
{pinMode(Trig,OUTPUT);pinMode(Echo,INPUT);
}float disMesure()
{float distance;struct timeval start; //struct timeval 是系统自带的测试时间的结构体struct timeval end;long time_start;long time_end;digitalWrite(Trig,LOW); //先让超声波Trig口的波达到平稳delayMicroseconds(2); //持续两微秒digitalWrite(Trig,HIGH); //然后让Trig保持十秒的高电平状态从而输出超声波delayMicroseconds(10);digitalWrite(Trig,LOW); //十秒过后让Trig恢复低电平while(digitalRead(Echo) != 1); //测试超声波还没发出时的时间gettimeofday(&start,NULL);while(digitalRead(Echo) != 0); //测试超声波在已经被Echo口接收时的时间gettimeofday(&end,NULL);time_start = start.tv_sec*1000000 + start.tv_usec; //将时间转化为微秒time_end = end.tv_sec*1000000 + end.tv_usec;distance = (float)(time_end - time_start)/1000000*34000/2; //计算出距离return distance;
}int main()
{float distances;if(wiringPiSetup() == -1){printf("fail to Set up the wiringPi\n");return -1;}UItraInit();while(1){distances = disMesure();printf("distance is:%0.2fcm\n",distances);delay(1000);}return 0;
}
以上是基于树莓派的超声波的学习笔记
学习笔记,仅供参考
树莓派之超声波测距的实现相关推荐
- 【树莓派】raspberry pi控制超声波测距
目录 一.超声波 1.模块介绍 2.工作原理 二.gettimeofday函数 三.树莓派控制超声波测距 一.超声波 1.模块介绍 简介: 超声波传感器模块上面通常有两个超声波元器件,一个用于发射 ...
- 树莓派基础实验24:超声波测距传感器实验
一.介绍 超声波传感器使用超声波来准确检测物体并测量距离.他发出超声波并将它们转换成电信号,主要应用于汽车的倒车雷达.机器人自动避障行走.建筑施工工地以及一些工业现场. 二.组件 ★Raspbe ...
- 树莓派超声波测距原理及例子
超声波原理 HC-SR04超声波测距模块: 工作电压电流:5V/15mA; 功能:约2cm-400cm的非接触式距离感测功能,测距精度可达高到3毫米:感知角度≤15°,被测物体面积不小于50cm²且平 ...
- 树莓派项目实践 [2] —— 编程控制实现超声波测距(C语言)
原创首发于CSDN,转载请注明出处,谢谢!https://blog.csdn.net/weixin_46959681/article/details/115256556 文章目录 超声波模块 树莓派与 ...
- 树莓派控制超声波传感器
看到大二的时候有写过关于树莓派控制HC-SR04超声波测距模块的教程,当时并未给出代码(也不知道是什么原因,估计初写博客并不熟悉吧),所以在三年后的今天贴代码出来,给大家参考下. //树莓派控制超声波 ...
- 超声波测距测速升压可调中周倒车雷达变频器传感器1:10
简 介: 通过对于是用于超声波测速变压器的基本分析,为后面构成150kHz 放大节能信标组的感应信号打下基础. 关键词: 中周,电压器,超声波 ▌01 中周变压器 购买到这个周中变压器主要是为了构 ...
- 【 FPGA 】超声波测距小实验(一)
超声波测距原理: 超声波测距原理是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似. 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播 ...
- 51单片机c语言测距,求助 关于C51单片机超声波测距 C语言程序设计 高手帮帮忙...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C51编程:超声波测距程序(附图) [请帮助] 2006-9-30 18:44:03 #include #define k1 P3_4 #define c ...
- Arduino的光敏传感器和超声波测距传感器测试代码
光敏传感器测试代码 使用的是一个未知名4pin模块, 4pin依次为Vcc, Gnd, DO, AO, 板载一个可调电阻以及一个LED, 调节电阻大小, 可以控制LED亮灭和DO输出变化对光亮的灵敏度 ...
最新文章
- 28.构造函数中,成员变量一定要通过初始化列表来初始化的?
- 大二上学期做的不入眼的导航系统。
- DBX到PDF转换器
- html空格字符转义存入数据库,HTML中多种空格转义字符
- labelImg使用教程
- c语言实现顺序表(详细代码)
- 13 个 Python 必备的知识,建议收藏!
- win10系统进不了服务器失败,快速解决Win10安装失败重启进不了系统的方法
- 猿辅导、掌门教育悄然转身,发力素质教育
- 【百科】详解阿里云技术核心——飞天
- 安利一个自动求导网站
- Linux中source filename .(点)filename ./filename sh filename的区别
- 树的递归与非递归遍历算法
- 【原创】畅言实现单点登录的设计流程和技术细节(1/2)
- hive用temporary table替换with
- 工作总结与述职报告ppt模板
- 如何手机录音文件转换mp3格式
- ffmpeg 多张图片转视频
- Blender宝剑制作
- python与金融建模_【用Python金融建模】从二叉树谈起:衍生品Option期权定价模型的构建...
热门文章
- 第二阶段爬虫day1作业
- error MSB3073: 命令“setlocal
- 饶毅:中国未来与科学的隐患
- HECKTOR2020第二名 Combining CNN and Hybrid Active Contours for Head and Neck Tumor Segmentation in CT a
- 脱硫塔烟囱隧道用乙烯基玻璃鳞片防腐面漆 可耐200℃高温
- C语言循环语句之for循环
- 【云原生系列】第四讲:Knative 之 Eventing
- v20荣耀什么时候能升级到鸿蒙,荣耀手机可以升级鸿蒙吗 荣耀手机升级鸿蒙时间...
- 基于java小区停车场管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- 水位控制系统工程-经典