树莓派超声波模块测距

参考:树莓派超声波模块测距及C语言demo
作者:一只青木呀
发布时间: 2020-07-22 16:54:16
网址:https://blog.csdn.net/weixin_45309916/article/details/107516949

前面这篇博文已经讲过了:树莓派外设开发基础(wiringPi库)

目录

  • 超声波硬件
  • 超声波原理
  • demo
  • 运行效果

超声波硬件

在这里插入图片描述

超声波原理

在这里插入图片描述
在这里插入图片描述

demo


#include <wiringPi.h>
#include <stdio.h>
#include <sys/time.h>
#define Trig    27
#define Echo    28void ultraInit(void)
{pinMode(Echo, INPUT);  //设置端口为输入pinMode(Trig, OUTPUT);  //设置端口为输出
}float disMeasure(void)
{struct timeval tv1;  //timeval是time.h中的预定义结构体 其中包含两个一个是秒,一个是微秒/**     struct timeval*         {*                 time_t tv_sec;  //Seconds.*                         suseconds_t tv_usec;  //Microseconds.*                             };*                                 */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){ //如果初始化失败,就输出错误信息 程序初始化时务必进行printf("setup wiringPi failed !");return 1;}ultraInit();while(1){dis = disMeasure();printf("distance = %0.2f cm\n",dis);delay(1000);}return 0;
}

运行效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring cloud (一、服务注册demo_eureka)

首先我的博客记理论知识很少&#xff0c;大家对spring boot、spring cloud 、分布式 、微服务什么的一点概念都没有的还请先去百度看看理论&#xff0c;知道了是做什么用的&#xff0c;然后再写下demo ,这样学起来才没有那么迷糊&#xff01; 我一般写下的demo都是我踩了很多坑…

JavaFX 的 UI 控件集 ControlsFX

出处&#xff1a;http://www.oschina.net/p/controlsfx JavaFX 的 UI 控件集 ControlsFX ControlsFX 开源项目旨在为 JavaFX 开发提供更多的 UI 控件和其他工具。 该项目主要针对JavaFX 8.0&#xff08;捆绑在JDK 8中&#xff09;&#xff0c;考虑到JavaFX中已经包含了一些控件…

c语言link错误什么原因,C语言 OpenCV错误:“LINK:致命错误LNK1104:无法打开文件’opencv_core231d.lib’”...

我正在尝试在visual studio opencv中编译一个简单的代码,但是遇到了这个错误.码&#xff1a;#include #include using namespace cv;int main ( int argc, char **argv ){Mat im_gray;Mat img_bw;Mat img_final;Mat im_rgb imread("001.jpg");cvtColor(im_rgb,im_gr…

shell 脚本编写使用

目录一、什么是shell 脚本二、shell 脚本写法三、shell 脚本语法1、第一个 shell 脚本2、read命令3、数值计算4、test命令5、中括号判断符6、默认变量7、条件判断8、函数9、循环一、什么是shell 脚本 终端中输入一系列命令完成一些操作&#xff0c;但是我们一条一条输入命令&a…

javaweb开发之处理表单上传文件和文件下载

2019独角兽企业重金招聘Python工程师标准>>> 一、基于表单的上传文件 1. enctype属性 当表单需要上传文件时&#xff0c;需指定表单 enctype 的值为 multipart/form-data。 在 form 元素的语法中&#xff0c;enctype 属性指定将数据发送到服务器时浏览器使用的编码…

单片机预备知识(电平、进制转换、字节、数据类型)

参考&#xff1a;郭天祥十天带你精通51单片机 网址&#xff1a;https://www.bilibili.com/video/BV1DW411a7mz/?spm_id_from333.788.videocard.0 目录电平特性二进制进制转换1K字节等于多少字节基本数据类型电平特性 二进制 进制转换 也可参考这篇&#xff1a;进制问题和C语言…

c语言程序设计王新萍课后答案,C语言程序设计教程

C语言程序设计教程出版时间&#xff1a;2010年12月定  价&#xff1a;29.80I S B N &#xff1a;9787121116322所属分类&#xff1a;标  签&#xff1a;计算机技术 电子电脑 程序与语言本书由多年从事C语言教学的教师编写。全书共分11章&#xff0c;主要内容包括&#xf…

vue之filter用法

1、全局写法&#xff1a; 全局过滤器必须写在vue实例创建之前。 Vue.filter(testfilter, function (value,text) {// 返回处理后的值return valuetext}) 2、局部写法&#xff1a; 在组件实例对象里挂载。 filters: {changemsg:(val,text)>{return val text}}, 3、使用&…

[summary] 单调队列

2019独角兽企业重金招聘Python工程师标准>>> 很久没做单调队列了╮(╯_╰)╭ 已经不太会了.... 单调队列究其本质就是队列,加上队尾可以删除. 队列都是从队尾插入,队首输出.单调队列也一样. 以队尾到队首递增的单调队列为例,我们需要保证队列的单调性,所以当插入一…

判断同构数 c语言,基于visual Studio2013解决C语言竞赛题之0413同构数

JQuery的基础和应用1.什么是? DOM的作用:提供了一种动态的操作HTML元素的方法. jQuery是一个优秀的js库.用来操作HTML元素的工具. jQuery和DOM ...tomcat 8在win8&period;1中的配置配置jdk: 三个步骤: 1.环境变量>新建 JAVA_HOME C:\Program Files\Java\jdk1.…

段错误的调试方法(printf输出、GDB)

参考&#xff1a;段错误产生原因及简单的调试方法 参考&#xff1a;如何解决段错误 参考&#xff1a;C语言gdb调试之精髓&#xff08;常用命令、多进程、多线程、程序日志&#xff09; 网址&#xff1a;https://www.bilibili.com/video/BV1ei4y1V758?fromsearch&seid40373…

Sparse Feature Learning

1. learn feature from sparse codes (source codes) : http://homes.cs.washington.edu/~lfb/ 2. parse scene(source codes):http://www.cs.illinois.edu/homes/slazebni/转载于:https://www.cnblogs.com/stoneresearch/p/4336332.html

c语言中error c2601,C 语言   dd.cpp(46) : error C2601: 'main' : local function definitions are illegal...

C 语言 dd.cpp(46) : error C2601: main : local function definitions are illegal0#include#includestruct phone{int num;int count;};int convet(char *p){ int i;for(i0;*p!\0;p){switch(*p){ case A:case B:case C:{p[i]2;i;continue;}case D:case E:case F:{p[i]3;i;c…

STM32使用IIC总线通讯协议在OLED屏幕上显示字符串、汉字、单总线获取DHT11模块温湿度并通过IIC显示到屏幕(软件IIC)

参考&#xff1a;基于stm32软件IIC的oled显示温湿度 作者&#xff1a;ZPZ DayUp 发布时间&#xff1a; 2021-07-25 20:52:43 网址&#xff1a;https://blog.csdn.net/m0_56197680/article/details/119077076?spm1001.2014.3001.5501 目录软件模拟IIC时序(起始、停止、应答、发…

区块链:定义未来金融与经济新格局

区块链:定义未来金融与经济新格局 1 区块链是什么 区块链的本质 区块链的本质是一种去中心化的记账系统&#xff0c;区块链与比特币之间的关系就是凯恩斯所说的记账货币与货币之间的关系&#xff0c;区块链是一套由信用记录以及信用记录的清算构成的体系。共识机制与价值载体 共…

Linux出现NOKEY

rpm --import /etc/pki/rpm-gpg/RPM*转载于:https://blog.51cto.com/someos/1338354

at指令返回值检验c语言,学渣求指教,如何识别字符串中的AT命令并逐个输出,求程序!!!...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Topic – to implement a parser to retrieve AT command line and print out (1) the tokensone by one and (2) the elapse time of each command line (processing).Please submit the solution in 48 hours.- The solution cou…

hdu 5730 Shell Necklace——多项式求逆+拆系数FFT

题目&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid5730 可以用分治FFT。但自己只写了多项式求逆。 和COGS2259几乎很像。设A(x)&#xff0c;指数是长度&#xff0c;系数是方案。 \( A(x)^{k} \) 的 m 次项系数表示 k 个连续段组成长度为 m 的序列的方案数。 \( B(x)…

虚拟磁带库

虚拟磁带库(Virtual Tape Library&#xff0c;VTL)&#xff0c;是指以磁盘作为自身存储介质&#xff0c;并能仿真为物理磁带库的产品。简单的说&#xff0c;虚拟磁带库就是将磁盘空间虚拟为磁带空间&#xff0c;能够在传统的备份软件上实现和传统磁带库同样功能的产品。传统磁带…

w ndows7端口在哪里,win7电脑遇到端口被占用的情况该如何查看并将其关闭

Windows7操作系统的酷炫和强大已经深受用户们的喜欢了&#xff0c;这里根大家分享的是教你查看win7电脑端口是否被占用的技巧&#xff0c;端口是我们在进行远程或者打印机等都会遇到的&#xff0c;但是有很多用户会遇到端口被占用的情况&#xff0c;遇到这样的问题首先就要找出…