| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux树莓派开发——gettimeofday函数,以及用超声波模块测量距离 -> 正文阅读 |
|
[系统运维]Linux树莓派开发——gettimeofday函数,以及用超声波模块测量距离 |
目录 1、delayMicroseconds (unsigned int howLong) 一、gettimeofday函数????????函数作用:会把得到从1970年1月1日0时0分0秒到现在的秒数返回到第一个参数指向的结构体中,第二个参数是关于时区,如果不用填入NULL,简单的说就是获取时间。 头文件:
函数原型:
函数的参数为两个结构体指针,其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果。 1、timeval结构体
timeval结构体中含有两个变量,tv_sec表示的是秒数,第二个参数tv_usec表示的就是微秒数。也就是获取到的时间。 2、timezone结构体
如果不用timezone结构体,则参数若不使用则传入NULL即可。 返回值:函数成功返回0,否则返回-1,错误代码存于errno。 二、超声波测距????????超声波模块采用的HC–SR04超声波模块,该模块可提供 2cm-400cm 的非接触式距离感测功能,测距精度可达高到 3mm,测量角度小于15度。模块包括超声波发射器、接收器与控制电路。 ????????基本工作原理:起初先给这两个引脚都拉低,然后给TRIG至少10us 的高电平信号;起始信号一开启,ECHO引脚就会被拉高的同时,超声波开始发射?8个40khz 的方波,自动检测是否有信号返回;ECHO引脚检测到反射回来的信号时就会被拉低,通过 ECHO 引脚输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。 实物图如下: 代码如下:
1、delayMicroseconds (unsigned int howLong)将线程暂停指定的微秒数(1000微妙=1毫秒=0.001s),Linux是多线程的,所以实际暂停的秒数可能比设置的更多一些。 2、根据返回的秒数计算出微秒数startTime =?tv1.tv_sec?*?1000000?+?tv1.tv_usec;? stopTime? =?tv2.tv_sec?*?1000000?+?tv2.tv_usec; ? ? 前面说到timeval结构体中含有两个成员,tv_sec表示的是秒数,1秒=1000000微妙,第二个参数tv_usec表示的就是微秒数,所以通过这两个式子我们就可以求出开始和结束时的微秒数,然后做差即可得到超声波传递所使用的时间。 tv1.tv_sec单位是秒,乘1000000表示微秒,再加上后面的微秒数就是超声波的时间。 3、根据时间计算距离????????(stopTime -?startTime)?/?1000000?*?34000?/?2 因为stopTime和startTime原本表示的微妙,所以做差之后除1000000是将单位换算为秒。因为声音是在空气中传播,所以取声音的速度为340m/s=34000cm/s,因为超声波测距的误差较小的范围为200-300cm,所以这里用cm表示。 4、效果展示完成! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 3:46:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |