目录

硬件初始化函数

通用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 引脚编号下的1脚(BCM下的18脚) 支持PWM输出

只有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        不启用任何拉电阻。关闭拉电阻。
             PUD_DOWN    启用下拉电阻,引脚电平拉到GND
             PUD_UP         启用上拉电阻,引脚电平拉到3.3v

对一个设置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库初始化相关推荐

  1. (转)树莓派wiringPi库详解

    https://www.cnblogs.com/lulipro/p/5992172.html <div id="post_detail"> 树莓派wiringPi库详解 ...

  2. 树莓派wiringPi库详解

    wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等.java 的pi4j项目也是基于wiringPi的,我最近也在看源代码,到时候整理好了 ...

  3. 第七课:树莓派WiringPi库

    目录 一.WiringPi库介绍 二.WiringPi安装 方法一: 安装git工具(已安装跳过)(前提已更换国内下载源) ①:输入一下指令 ​②: 输入指令--在线获得 WiringPi 的源代码( ...

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

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

  5. 树莓派教程 - 1.2 树莓派GPIO库wiringPi 软件PWM

    Git例程源码仓库:https://github.com/ZhiliangMa/raspberry.git 使用到的硬件: led,200Ω左右的电阻.杜邦线. 上一节使用硬件PWM来控制led亮度, ...

  6. 树莓派教程 - 1.0 树莓派GPIO库wiringPi 点亮LED

    Git例程源码仓库:https://github.com/ZhiliangMa/raspberry.git 电脑需要提前安装的工具: SSH.串口 - 终端神器 MobaXterm,官网下载链接:ht ...

  7. 树莓派开发—— wiringPi 库的使用

    一.wiringPi 的安装 参考文献: https://www.cnblogs.com/lulipro/p/5992172.html 进入 wiringPi的github (https://git. ...

  8. 【树莓派】了解wiringPi库、控制继电器

    目录 一.wiringPi库 二.继电器 1.继电器介绍及接线说明 2.树莓派控制继电器 一.wiringPi库   wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:G ...

  9. 树莓派开发2-静态库,动态库,wiringpi库

    文章目录 库 库的制作 库的使用 wiringpi库 树莓派学习笔记,本文图片文字皆为转述 库 a)静态库 静态函数库,是在程序执行前(编译)就加入到目标程序中去了 : 优点: 运行快发布程序无需提供 ...

最新文章

  1. centos下面安装mysql_centos下安装mysql
  2. 为拯救爸妈朋友圈,达摩院造了“谣言粉碎机”
  3. javascript --- js中的作用域 变量提升
  4. IE8 兼容background-size的解决办法
  5. Nagios LDAP用户pager被清空问题
  6. java decimal_java DecimalFormat常用方法详解
  7. PHP中date()日期函数有关参数整理
  8. 心形图案爱心代码编程c语言
  9. MongoDB University课程M103 Basic Cluster Administration 学习笔记
  10. python继承方式是基于原型吗_【Python】python 普通继承方式和super继承方式
  11. 密码编码学与网络安全学习笔记
  12. Excel 某招聘网站职位分析项目
  13. 论文阅读笔记《Improving Unsupervised Defect Segmentation by Applying Structural Similarity To Autoencoders》
  14. InstallShield Slient Uninstall
  15. 怎么把手机文件导入华为云服务器,华为手机如何上传数据到云服务器
  16. 如何利用PuTTY连接Windows主机和Linux虚拟机
  17. 电力电子技术的matlab实践 下载,电力电子技术MATLAB仿真实践指导及应用
  18. 猪猪大PK V0.3
  19. 好文:华杉:我等用功,不求日增,但求日减。减一分人欲,则增一分天理,这是何等简易!何等洒脱!...
  20. pyhton爬诛仙小说

热门文章

  1. 手机开发平台汇总(转)
  2. 【7】Spring Boot系列之REST Docs
  3. uniapp 全局方法封装
  4. AVOSCloud入门教程:Android Parse云服务的Hello World
  5. 排序算法之冒泡排序及鸡尾酒排序
  6. 中国工商银行电子银行业务收费标准
  7. 国通总结——如何获取客户的双录视频
  8. BT601 与 BT656颜色空间区别
  9. 计算机游戏攻略 185,少儿编程游戏CodeMonkey通关攻略:第180-185关
  10. ls -l 与 ls -a 、ls -al 的区别