树莓派wiringPi库初始化
目录
硬件初始化函数
通用GPIO控制函数
树莓派控制继电器
超声波测距
查看引脚编号表格
在使用wiringPi库时,你需要包含头文件 #include<wiringPi.h>。凡是写wiringPi的程序,都包含这个头文件。
硬件初始化函数
使用wiringPi时,你必须在执行任何操作前初始化树莓派,否则程序不能正常工作。
可以调用下表函数之一进行初始化,它们都会返回一个int , 返回 -1 表示初始化失败。
int wiringPiSetup (void) | 返回:执行状态,-1表示失败 |
当使用这个函数初始化树莓派引脚时,程序使用的是wiringPi 引脚编号表。引脚的编号为 0~16需要root权限 |
int wiringPiSetupGpio (void) | 返回执行状态,-1表示失败 |
当使用这个函数初始化树莓派引脚时,程序中使用的是BCM GPIO 引脚编号表。需要root权限 |
wiringPiSetupPhys(void) | / | / |
wiringPiSetupSys (void) ; | / | / |
通用GPIO控制函数
void pinMode (int pin, int mode) |
pin:配置的引脚 mode:指定引脚的IO模式 可取的值:INPUT、OUTPUT、PWM_OUTPUT,GPIO_CLOCK |
作用:配置引脚的IO模式 注意: 只有wiringPi编号下的7(BCM下的4号)支持GPIO_CLOCK输出 |
void digitalWrite (int pin, int value) |
pin:控制的引脚 value:引脚输出的电平值。 可取的值:HIGH,LOW分别代表高低电平 |
让对一个已近配置为输出模式的 引脚 输出指定的电平信号 |
int digitalRead (int pin) |
pin:读取的引脚 返回:引脚上的电平,可以是LOW HIGH 之一 |
读取一个引脚的电平值 LOW HIGH ,返回 |
void analogWrite(int pin, int value) |
pin:引脚 value:输出的模拟量 |
模拟量输出 树莓派的引脚本身是不支持AD转换的,也就是不能使用模拟量的API, 需要增加另外的模块 |
int analogRead (int pin) |
pin:引脚 返回:引脚上读取的模拟量 |
模拟量输入 树莓派的引脚本身是不支持AD转换的,也就是不能使用模拟量的API, 需要增加另外的模块 |
void pwmWrite (int pin, int value) |
pin:引脚 value:写入到PWM寄存器的值,范围在0~1024之间。 |
输出一个值到PWM寄存器,控制PWM输出。 pin只能是wiringPi 引脚编号下的1脚(BCM下的18脚) |
void pullUpDnControl (int pin, int pud) |
pin:引脚 pud:拉电阻模式 可取的值: PUD_OFF 不启用任何拉电阻。关闭拉电阻。 |
对一个设置IO模式为 INPUT 的输入引脚设置拉电阻模式。 与Arduino不同的是,树莓派支持的拉电阻模式更丰富。 树莓派内部的拉电阻达50K欧姆 |
树莓派控制继电器
#include<wiringPi.h>
#include<stdio.h>
#define swith1 28
#define swith2 29void set()
{int cmd ;printf("请输入0/1:0断开 ,1导通\n");scanf("%d",&cmd);getchar();if(cmd==1){digitalWrite(swith1,LOW);}else if(cmd==0){digitalWrite(swith1,HIGH);}else{printf("输入错误\n");}
}void set2()
{int cmd ;printf("请输入0/1:0断开 ,1导通\n");scanf("%d",&cmd);getchar();if(cmd==1){digitalWrite(swith2,LOW);}else if(cmd==0){digitalWrite(swith2,HIGH);}else{printf("输入错误\n");}
}
int main(){int ret;if(wiringPiSetup ()==-1){ //初始化树莓派引脚printf("初始化失败\n");return -1;}pinMode(swith1,OUTPUT); //配置28引脚为输出引脚pinMode(swith2,OUTPUT); //配置29引脚为输出引脚digitalWrite(swith1,HIGH); //输出电平信号HIGHdigitalWrite(swith2,HIGH);while(1){printf("请选择一个继电器“1/2 3-全部打开,4-全部关闭");scanf("%d",&ret);getchar();switch(ret){case 1 :set();break;case 2: set2();break;case 3:digitalWrite(swith1,LOW);digitalWrite(swith2,LOW);break;case 4:digitalWrite(swith1,HIGH);digitalWrite(swith2,HIGH);break;}}
}
超声波测距
#include <wiringPi.h>
#include <stdio.h>
#include <sys/time.h>#define Trig 4
#define Echo 5void chaoshengboInit(void)
{pinMode(Echo, INPUT);//检测波什么时候发什么时候回来设置端口为输入pinMode(Trig, OUTPUT);//触发脉冲设置端口为输出
}float disMeasure(void)//测距原理
{struct timeval tv1;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;}chaoshengboInit();//调用超声波函数while (1) {//不断地测距dis = disMeasure();printf("distance = %0.2f cm\n", dis);delay(1000);}return 0;
}
查看引脚编号表格
使用如下控制台下命令
gpio readall
树莓派wiringPi库初始化相关推荐
- (转)树莓派wiringPi库详解
https://www.cnblogs.com/lulipro/p/5992172.html <div id="post_detail"> 树莓派wiringPi库详解 ...
- 树莓派wiringPi库详解
wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等.java 的pi4j项目也是基于wiringPi的,我最近也在看源代码,到时候整理好了 ...
- 第七课:树莓派WiringPi库
目录 一.WiringPi库介绍 二.WiringPi安装 方法一: 安装git工具(已安装跳过)(前提已更换国内下载源) ①:输入一下指令 ②: 输入指令--在线获得 WiringPi 的源代码( ...
- 树莓派外设开发基础(wiringPi库)
参考:树莓派外设开发基础篇 作者:丶PURSUING 发布时间:2021-02-05 18:20:53 网址:https://blog.csdn.net/weixin_44742824/article ...
- 树莓派教程 - 1.2 树莓派GPIO库wiringPi 软件PWM
Git例程源码仓库:https://github.com/ZhiliangMa/raspberry.git 使用到的硬件: led,200Ω左右的电阻.杜邦线. 上一节使用硬件PWM来控制led亮度, ...
- 树莓派教程 - 1.0 树莓派GPIO库wiringPi 点亮LED
Git例程源码仓库:https://github.com/ZhiliangMa/raspberry.git 电脑需要提前安装的工具: SSH.串口 - 终端神器 MobaXterm,官网下载链接:ht ...
- 树莓派开发—— wiringPi 库的使用
一.wiringPi 的安装 参考文献: https://www.cnblogs.com/lulipro/p/5992172.html 进入 wiringPi的github (https://git. ...
- 【树莓派】了解wiringPi库、控制继电器
目录 一.wiringPi库 二.继电器 1.继电器介绍及接线说明 2.树莓派控制继电器 一.wiringPi库 wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:G ...
- 树莓派开发2-静态库,动态库,wiringpi库
文章目录 库 库的制作 库的使用 wiringpi库 树莓派学习笔记,本文图片文字皆为转述 库 a)静态库 静态函数库,是在程序执行前(编译)就加入到目标程序中去了 : 优点: 运行快发布程序无需提供 ...
最新文章
- centos下面安装mysql_centos下安装mysql
- 为拯救爸妈朋友圈,达摩院造了“谣言粉碎机”
- javascript --- js中的作用域 变量提升
- IE8 兼容background-size的解决办法
- Nagios LDAP用户pager被清空问题
- java decimal_java DecimalFormat常用方法详解
- PHP中date()日期函数有关参数整理
- 心形图案爱心代码编程c语言
- MongoDB University课程M103 Basic Cluster Administration 学习笔记
- python继承方式是基于原型吗_【Python】python 普通继承方式和super继承方式
- 密码编码学与网络安全学习笔记
- Excel 某招聘网站职位分析项目
- 论文阅读笔记《Improving Unsupervised Defect Segmentation by Applying Structural Similarity To Autoencoders》
- InstallShield Slient Uninstall
- 怎么把手机文件导入华为云服务器,华为手机如何上传数据到云服务器
- 如何利用PuTTY连接Windows主机和Linux虚拟机
- 电力电子技术的matlab实践 下载,电力电子技术MATLAB仿真实践指导及应用
- 猪猪大PK V0.3
- 好文:华杉:我等用功,不求日增,但求日减。减一分人欲,则增一分天理,这是何等简易!何等洒脱!...
- pyhton爬诛仙小说