1.综述
树莓派外设开发需要用的wiringPi()库函数
在调用时需要包含#include<wiringPi.h>文件
使用wiringPi()库函数时需要将其初始化,方法为:调用
int wiringPiSetup();函数
编译时需要连接 -lwiringPi库函数

2.Linux中的测时方法
2.1 Linux中的struct timeval的结构体
timeval是time.h中的预定义结构体 其中包含两个一个是秒,一个是微秒
struct timeval {
__kernel_time_t tv_sec; /* seconds /
__kernel_suseconds_t tv_usec; /
microseconds */
};
2.2用 gettimeofday(&tv1, NULL);函数来获取当前的时刻
2.3 获取时间函数的具体用法

#include <stdio.h>
#include <sys/time.h>int main()
{struct timeval tv;gettimeofday(&tv,NULL);//获取当前时间printf("the sec is %ld ,the usec is %ld\n",tv.tv_sec,tv.tv_usec);return 0;
}


获得当前时间相对于某一时刻(1970年1月1日到现在的时间)的时间的微秒部分

3.超声波测距代码实现

#include <stdio.h>
#include <sys/time.h>
#include <stdlib.h>
#include <wiringPi.h>#define echo 27
#define trig 28void ultrasonicInit()
{pinMode(echo,INPUT);pinMode(trig,OUTPUT);}double getDistance()
{double dis;struct timeval start_tv;struct timeval end_tv;double start_time,end_time;//1.trig端口发送至少10us的高电平digitalWrite(trig,LOW);//先将trig引脚置低usleep(5);digitalWrite(trig,HIGH);//拉高usleep(10);//延迟10usdigitalWrite(trig,LOW);//2.echo 由低电平变为高电平表示开始发生while(!digitalRead(echo));//等待echo由低电平变为高电平gettimeofday(&start_tv,NULL);//获取开始发送的start_time = start_tv.tv_sec*1000000+start_tv.tv_usec;//3.echo由高电平变为低电平表示超声波遇障碍物反弹回来接收回来的时间gettimeofday(&end_tv,NULL);end_time = end_tv.tv_sec*1000000+end_tv.tv_usec;//4.计算距离: 距离 = 速度 * 时间 dis = (end_time - start_time)/1000000*34000/2;return dis;return dis;
}
int int main(int argc, char const *argv[])
{double distance;//wiringPi库的初始化if(wiringPiSetup() == -1){printf("wiringPi库的初始化失败\n");exit(-1);}//引脚初始化ultrasonicInit();//不断测量距离while(1){distance = getDistance();printf("distance = %0.2f\n",distance );delay(1000);}return 0;
}

树莓派外设开发——超声波相关推荐

  1. 树莓派外设开发基础(wiringPi库)

    参考:树莓派外设开发基础篇 作者:丶PURSUING 发布时间:2021-02-05 18:20:53 网址:https://blog.csdn.net/weixin_44742824/article ...

  2. 树莓派——3、树莓派外设开发编程

    树莓派外设开发接口文档参考 wringPi库(特定平台,特定功能的接口)树莓派wiringPi库详解 - lulipro - 博客园 (cnblogs.com) 一.树莓派的接口 IO口:input/ ...

  3. 树莓派外设开发(快速上手)

    树莓派外设开发 wiringPi库的使用 例子---接收指令让继电器工作 HC-SR04超声波测距模块简单应用 跨平台文件传输 FileZilla软件 linux环境自带的scp指令 串口交互 修改c ...

  4. 树莓派外设开发之超声波

    树莓派超声波测距 树莓派Gpio引脚图: 注意:这里代码中使用的是wiringPi编码,图中GPIO 针脚定义为根据BCM编码定义 超声波模块介绍: 接线参考:模块除了两个电源引脚外,还有Trig,E ...

  5. 树莓派外设开发之接入语音模块

    参考:树莓派接入语音模块控制继电器组 作者:糯米啊啊 发布时间: 2021-04-18 17:07:08 网址:https://blog.csdn.net/weixin_43732386/articl ...

  6. 树莓派外设开发之玩传感器

    参考:用树莓派玩传感器 作者:LEO-max 发布时间: 2021-02-24 16:30:46 网址:https://blog.csdn.net/zouchengzhi1021/article/de ...

  7. 树莓派外设开发之控制继电器(组)

    目录 控制继电器 控制继电器组 控制继电器 选择7号引脚作为继电器信号输出控制端. 代码: #include <wiringPi.h> #include <stdio.h> # ...

  8. 树莓派外设开发基础—串口通信

    文章目录 一.串口通信的一些概念 二.树莓派串口通信设置 三.树莓派串口通信API 四.树莓派与PC通信 1.接线 2.程序与测试 拓展 一.串口通信的一些概念 串口通信通常用在多机通信中. 串口通信 ...

  9. 树莓派外设开发——舵机控制

    1.综述 普通舵机的角度控制需要用到PWM实现,这里用到Linux定时器产生PWM波形,关于Linux定时器,这篇文章有一个简单的介绍 Linux定时器 舵机控制原理大致如下: 2.代码 #inclu ...

最新文章

  1. xamarin使用mysql_[开源] .NetCore .NetFramework Xamarin 使用 ORM FreeSql 访问 MySql
  2. DispatcherServlet默认配置
  3. rmmod: can't change directory to '3.4.39': No such file or directory 解决方法
  4. 周期信号的傅里叶级数表示
  5. 配置文件configSections节点使用实例      。
  6. 【7.9校内test】T1挖地雷
  7. 生物信息学 陈铭_后基因组时代生物信息学_陈铭.pdf
  8. Open Source Drives IOT From Device to Edge
  9. pip 加速_如何将Numpy加速700倍?用 CuPy 呀
  10. Java反编译工具JAD安装与基本使用
  11. 二进制和十六进制的转换操作
  12. 2020第一本书《自私的基因》
  13. 游戏3D建模入门,有哪些建模软件可以选择?
  14. Oracle12c设置PDB企业管理器登录端口
  15. python找不到了_python包找不到
  16. 张赐荣 | 浅谈 UIAutomation 自动化技术在读屏软件中的应用
  17. 用Python编写自动下载网络小说的脚本
  18. 小米华为抢占智能家居,智慧家庭时代到来?
  19. postgresql学习(一)
  20. 【大数据入门核心技术-Flume】(四)使用Flume采集数据到Hive

热门文章

  1. 如何用Python从TripAdvisor抓取数十万条酒店评论
  2. 分布式消息中间件Metaq发布1.4.3
  3. 你知道豆瓣电影是怎么评分的吗?
  4. httpClient访问网络,httpclient.execute(httpGet)方法阻塞主线程问题
  5. Power Bi Desktop 中如何做出像 Excel 一样的透视表,PowerBi的分组依据用法
  6. 解决访问Github图片无法加载的小妙招
  7. 用java编写输出欢迎光临_编写一个完整的Java applet程序,程序功能为:在屏幕上输出“欢迎光临Java世界!”的字符串信息。...
  8. Anaconda+Paddle
  9. 第二类修正贝塞尔函数
  10. 关于成为sap顾问的心得体会