树莓派中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);
    }
}
posted @ 2019-03-19 16:15  wangha  阅读(1405)  评论(0编辑  收藏  举报