树莓派中QT实现PWM

Posted wangha

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树莓派中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);
    }
}

以上是关于树莓派中QT实现PWM的主要内容,如果未能解决你的问题,请参考以下文章

在 C/C++ 中在树莓派中播放 WAV,必须使用 dsp?

树莓派中GPIO针角定义图

在树莓派的交叉编译 qt 中构建应用程序时出错

树莓派中编译OpenCV3.4.1和OpenCvSharp

valgrind 无法识别树莓派中的 memcmp 指令

在树莓派中开启激动人心的 Perl 之旅