• 树莓派中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);
        }
    }
    
  • 相关阅读:
    mybatis返回map类型数据空值字段不显示(三种解决方法)
    linux各种资源查看
    ssh代理
    python 自定义ping编写
    python 备忘(协程,多进程)
    python 控制电源模块for循环写法
    XPath 语法
    python 自定义去掉特殊字符串
    ssh证书登陆vpc/并且反向代理
    cmder设置
  • 原文地址:https://www.cnblogs.com/wangha/p/10559379.html
Copyright © 2020-2023  润新知