wiringPi接口的介绍
WiringPi是应用于树莓派平台的GPIO控制库函数,WiringPi遵守GNU Lv3。wiringPi使用C或者C++开发并且可以被其他语言包转,例如python、ruby或者PHP等。
WiringPi中的函数类似于Arduino的wiring系统,这使得熟悉arduino的用户使用wringPi更为方便。
树莓派具有26个普通输入和输出引脚。在这26个引脚中具有8个普通输入和输出管脚,这8个引脚既可以作为输入管脚也可以作为输出管脚。
除此之外,树莓派还有一个2线形式的I2C、一个4线形式的SPI和一个UART接口。树莓派上的I2C和SPI接口也可以作为普通端口使用。如果串口控制台被关闭便可以使用树莓派上的UART功能。如果不使用I2C,SPI和UART等复用接口,那么树莓派总共具有8+2+5+2 =17个普通IO。
wiringPi包括一套gpio控制命令,使用gpio命令可以控制树莓派GPIO管脚。用户可以利用gpio命令通过shell脚本控制或查询GPIO管脚。wiringPi是可以扩展的,可以利用wiringPi的内部模块扩展模拟量输入芯片,可以使用MCP23x17/MCP23x08(I2C 或者SPI)扩展GPIO接口。另外可通过树莓派上的串口和Atmega(例如arduino等)扩展更多的GPIO功能。另外,用户可以自己编写扩展模块并把自定义的扩展模块集成到wiringPi中。WiringPi支持模拟量的读取和设置功能,不过在树莓派上并没有模拟量设备。但是使用WiringPi中的软件模块却可以轻松地应用AD或DA芯片。
wiringPi接口的安装
安装git(版本控制器) sudo apt-get install git-core
查看是否安装完成 git --versioin
输入命令git安装wiringPi git clone git://git.drogon.net/wiringPi
之后进入 wiringPi目录 cd wiringPi
安装库 ./build
wiringPi的使用
参考链接:http://blog.lxx1.com/%E6%A0%91%E8%8E%93%E6%B4%BE-wiringpi-%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C
硬件初始化函数:
int wiringPiSetup (void) //返回:执行状态,-1表示失败 当使用这个函数初始化树莓派引脚时,程序使用的是wiringPi 引脚编号表。引脚的编号为 0~16 需要root权限
int wiringPiSetupGpio (void) 返回执行状态,-1表示失败 当使用这个函数初始化树莓派引脚时,程序中使用的是BCM GPIO 引脚编号表。 需要root权限、
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 引脚电平拉到3.3v
PUD_UP 引脚电平拉到0v 接地 对一个设置IO模式为 INPUT 的输入引脚设置拉电阻模式。
与Arduino不同的是,树莓派支持的拉电阻模式更丰富。树莓派内部的拉电阻达50K欧姆
树莓派上的gpio(可以直接执行gpio readall查看)
由上可知树莓派管脚有三种编号方式,第一种为板上编号(37),即中间两列,表示第几号插针。第二中为wiringPi编码(25),使用wiringPi库编程时是用wiringPi编号,第三种为BCM编号,这个是更加BCM管脚来编号的,使用bcm2837库或python的RPi.GPIO编程时使用BCM编号。