zoukankan      html  css  js  c++  java
  • 树莓派中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);
        }
    }
    
  • 相关阅读:
    mongodb的学习-1-NoSQL
    mongodb的学习-3-在Mac上的安装配置
    面试题之算法与编程
    笔试题之javaweb
    笔试题之j2ee
    笔试题之代码查错
    笔试题之java基础
    javaweb笔记分享
    过滤器入门
    jsp入门
  • 原文地址:https://www.cnblogs.com/wangha/p/10559379.html
Copyright © 2011-2022 走看看