一、首先来进行对超声波模块进行简单的介绍
超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收,电路板上有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;
}

以上是基于树莓派的超声波的学习笔记

学习笔记,仅供参考

树莓派之超声波测距的实现相关推荐

  1. 【树莓派】raspberry pi控制超声波测距

    目录 一.超声波 1.模块介绍 2.工作原理 二.gettimeofday函数 三.树莓派控制超声波测距 一.超声波 1.模块介绍 简介:   超声波传感器模块上面通常有两个超声波元器件,一个用于发射 ...

  2. 树莓派基础实验24:超声波测距传感器实验

    一.介绍    超声波传感器使用超声波来准确检测物体并测量距离.他发出超声波并将它们转换成电信号,主要应用于汽车的倒车雷达.机器人自动避障行走.建筑施工工地以及一些工业现场. 二.组件 ★Raspbe ...

  3. 树莓派超声波测距原理及例子

    超声波原理 HC-SR04超声波测距模块: 工作电压电流:5V/15mA; 功能:约2cm-400cm的非接触式距离感测功能,测距精度可达高到3毫米:感知角度≤15°,被测物体面积不小于50cm²且平 ...

  4. 树莓派项目实践 [2] —— 编程控制实现超声波测距(C语言)

    原创首发于CSDN,转载请注明出处,谢谢!https://blog.csdn.net/weixin_46959681/article/details/115256556 文章目录 超声波模块 树莓派与 ...

  5. 树莓派控制超声波传感器

    看到大二的时候有写过关于树莓派控制HC-SR04超声波测距模块的教程,当时并未给出代码(也不知道是什么原因,估计初写博客并不熟悉吧),所以在三年后的今天贴代码出来,给大家参考下. //树莓派控制超声波 ...

  6. 超声波测距测速升压可调中周倒车雷达变频器传感器1:10

    简 介: 通过对于是用于超声波测速变压器的基本分析,为后面构成150kHz 放大节能信标组的感应信号打下基础. 关键词: 中周,电压器,超声波 ▌01 中周变压器   购买到这个周中变压器主要是为了构 ...

  7. 【 FPGA 】超声波测距小实验(一)

    超声波测距原理: 超声波测距原理是在超声波发射装置发出超声波,它的根据是接收器接到超声波时的时间差,与雷达测距原理相似. 超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播 ...

  8. 51单片机c语言测距,求助 关于C51单片机超声波测距 C语言程序设计 高手帮帮忙...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 C51编程:超声波测距程序(附图) [请帮助] 2006-9-30 18:44:03 #include #define k1 P3_4 #define c ...

  9. Arduino的光敏传感器和超声波测距传感器测试代码

    光敏传感器测试代码 使用的是一个未知名4pin模块, 4pin依次为Vcc, Gnd, DO, AO, 板载一个可调电阻以及一个LED, 调节电阻大小, 可以控制LED亮灭和DO输出变化对光亮的灵敏度 ...

最新文章

  1. 28.构造函数中,成员变量一定要通过初始化列表来初始化的?
  2. 大二上学期做的不入眼的导航系统。
  3. DBX到PDF转换器
  4. html空格字符转义存入数据库,HTML中多种空格转义字符
  5. labelImg使用教程
  6. c语言实现顺序表(详细代码)
  7. 13 个 Python 必备的知识,建议收藏!
  8. win10系统进不了服务器失败,快速解决Win10安装失败重启进不了系统的方法
  9. 猿辅导、掌门教育悄然转身,发力素质教育
  10. 【百科】详解阿里云技术核心——飞天
  11. 安利一个自动求导网站
  12. Linux中source filename .(点)filename ./filename sh filename的区别
  13. 树的递归与非递归遍历算法
  14. 【原创】畅言实现单点登录的设计流程和技术细节(1/2)
  15. hive用temporary table替换with
  16. 工作总结与述职报告ppt模板
  17. 如何手机录音文件转换mp3格式
  18. ffmpeg 多张图片转视频
  19. Blender宝剑制作
  20. python与金融建模_【用Python金融建模】从二叉树谈起:衍生品Option期权定价模型的构建...

热门文章

  1. 第二阶段爬虫day1作业
  2. error MSB3073: 命令“setlocal
  3. 饶毅:中国未来与科学的隐患
  4. HECKTOR2020第二名 Combining CNN and Hybrid Active Contours for Head and Neck Tumor Segmentation in CT a
  5. 脱硫塔烟囱隧道用乙烯基玻璃鳞片防腐面漆 可耐200℃高温
  6. C语言循环语句之for循环
  7. 【云原生系列】第四讲:Knative 之 Eventing
  8. v20荣耀什么时候能升级到鸿蒙,荣耀手机可以升级鸿蒙吗 荣耀手机升级鸿蒙时间...
  9. 基于java小区停车场管理系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  10. 水位控制系统工程-经典