树莓派中QT实现PWM
树莓派中QT实现PWM
在QT中实现 PWM 使用的驱动为 wiringPi
之前的博客中已经介绍了 wiringPi , BOARD 管脚, BCM 之间的关系
这次, 就介绍在 wiringPi 中的PWM如何使用
库的引入
LIBS += -lwiringPi
LIBS += -lwiringPiDev
UI 展示
效果展示
PWM低时
PWM高时
代码实现
widget.h 中
定义UI中两个控件对应的槽函数
#include <QWidget>
#include <QDebug>
#include "wiringPi.h"
#include "softPwm.h"
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_clicked();
void on_horizontalSlider_valueChanged(int value);
private:
Ui::Widget *ui;
int count = 0;
int pwm = 0;
};
widget.cpp 中
在槽函数中具体对PWM进行实现
#include "widget.h"
#include "ui_widget.h"
#define PWMrange 100
Widget::Widget(QWidget *parent) : QWidget(parent),
ui(new Ui::Widget){
ui->setupUi(this);
wiringPiSetup();
pinMode(25,OUTPUT);
softPwmCreate(25,0,PWMrange);
}
Widget::~Widget(){
delete ui;
}
void Widget::on_pushButton_clicked(){
count ++;
if(count % 2 == 1){
softPwmWrite(25,pwm);
qDebug() << "1";
}else{
softPwmWrite(25,0);
qDebug() << "0";
}
}
void Widget::on_horizontalSlider_valueChanged(int value){
pwm = value;
if(count % 2 == 0){
softPwmWrite(25,0);
return;
}else {
softPwmWrite(25,pwm);
}
}