树莓派控制GPIO一般有多种方式如wiringPi、bcm2835库、python的RPi.GPIO库,这里介绍一种通过使用中间层库函数编程控制GPIO.
一、wiringPi安装
WiringPi是应用于树莓派平台的GPIO控制库函数,WiringPi中的函数类似于Arduino的wiring系统。官网:http://wiringpi.com/,安装操作如下:
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
除此之外,还可以在windows平台直接下载包,复制到树莓派中解压安装,这里不再介绍。
wiringPi包括一套gpio命令,使用gpio命令可以控制树莓派上的各种接口,通过以下指令可以测试wiringPi是否安装成功:
gpio -v
gpio readall
如果出现所有引脚图代表安装成功
二 QT中使用
在QT中通过wiringPi控制GPIO,首先要在pro文件中加入如下程序:
LIBS += -lwiringPi
然后在.h文件中引入头文件:
#include <wiringPi.h>
最后在.cpp中使用即可。
使用前首先要初始化,在Qt的构造函数中加入以下初始化代码:
wiringPiSetup();
pinMode(3,OUTPUT);//设置Pin 3为输出模式,若为’INPUT‘则为输入模式,编码格式为wiringpi
然后在控制函数中可以编写自己的逻辑代码。如:
digitalWrite(3,HIGH); //'HIGH'代表高电平,相当于1,’LOW‘则为低电平,相当于’0‘
digitalWrite(3,LOW); //'HIGH'代表高电平,相当于1,’LOW‘则为低电平,相当于’0‘
再如,如果要产生PWM:
#include <softPwm.h> //引入头文件wiringPiSetup (); // wiringPi库初始化
在控制函数里:
softPwmCreate (1, 0, 100) ; // 设置GPIO.1为PWM输出 softPwmWrite(1,val); // 输出占空比为val/100的pwm波
int softPwmCreate (int pin, int initialValue, int pwmRange) ;
参数pin,树莓派的任何一个GPIO引脚都可以被设置成软件PWM的输出引脚。
参数initialValue,PWM初始值,这值得范围在0~100之间。
参数pwmRange,PWM输出范围,这值得范围在0~100之间。
注意点:
PWM输出的每一个“周期”都需要10毫秒,默认范围值为100,因此,尝试每秒改变PWM值超过100次将是徒劳的。(也就是说软件PWM的固定输出频率是100HZ,这个对于驱动一般的电机是足够了)
您需要保持您的程序运行,以维护PWM输出!
在软PWM模式下激活的每个引脚使用大约0.5%的CPU。
目前还没有办法禁用软PWM上的一个引脚,而程序在运行中。
您需要保持您的程序运行,以维护PWM输出!