当前位置: 代码迷 >> 综合 >> QT+Raspberry PI +WiringPi实现gpio口操作
  详细解决方案

QT+Raspberry PI +WiringPi实现gpio口操作

热度:94   发布时间:2023-11-02 15:31:16.0

树莓派控制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输出!