【树莓派】 Qt 界面 点灯

文章目录

    • 一、安装QT5和QT Creator
    • 二、编写控制代码
    • 三、运行效果
    • 参考文档:

一、安装QT5和QT Creator

这里只安装QT基础的部分,还有其他模块。

// 安装QT的基本库
sudo apt-get install qt5-default        
// 安装QT的IDE
sudo apt-get install qtcreator
//新的树莓派如4B, 需更新wiringpi(控制IO库) 
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

验证wiringpi 安装是否成功
执行gpio readall
【树莓派】 Qt 界面 点灯_第1张图片
可以看到很直观的看到IO的IO模式,是输出还是输入。
另外编程时需要使用的 IO端口号也列出来的,这里使用wiringpi 控制的话 关注wpi那列的端口,和python使用RPi库控制IO编号不一样。

二、编写控制代码

1、新建工程
【树莓派】 Qt 界面 点灯_第2张图片
2、选择QWidget
【树莓派】 Qt 界面 点灯_第3张图片
3、pro工程添加LIBS += -lwiringPi 【树莓派】 Qt 界面 点灯_第4张图片

4、widget.ui添加两个按钮 改名为b1,b2
【树莓派】 Qt 界面 点灯_第5张图片
右键按钮 转到槽
【树莓派】 Qt 界面 点灯_第6张图片
【树莓派】 Qt 界面 点灯_第7张图片
这里都选clicked()

这样就可以在两个clicked 加入点亮LED和熄灭LED的代码,就可以实现按钮控制了

【树莓派】 Qt 界面 点灯_第8张图片

5、widget.cpp 写入完整的IO控制代码

这里我们使用pin12,也就是对应wpi 1的口

widget.cpp 完整代码:

#include "widget.h"
#include "ui_widget.h"
#include "wiringPi.h"//添加头文件

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    wiringPiSetup();//初始化

    pinMode(1,OUTPUT); //PIN12 use "gpio readall" get status

}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_b1_clicked()
{
    digitalWrite(1,HIGH);
}

void Widget::on_b2_clicked()
{
    digitalWrite(1,LOW);
}

widget.h 完整代码 (这里添加槽函数是刚才转到槽自动处理的,不需要手动修改)

#ifndef WIDGET_H
#define WIDGET_H

#include 

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_b1_clicked();

    void on_b2_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

三、运行效果

点击运行
【树莓派】 Qt 界面 点灯_第9张图片
编译没有报错就是OK

可以看到已经生成了可执行文件
【树莓派】 Qt 界面 点灯_第10张图片
界面如图:
【树莓派】 Qt 界面 点灯_第11张图片
点击ON和OFF,灯实现了亮灭,实现了功能,实物这里就不展示了, 偷懒,嘻嘻。

总结:这里只是简单展示了一下树莓派Qt编程,可能看的云里雾里的,学习Qt还是要系统性的学,PC端也可以学,树莓派下,Ctrl +Shift +C和Ctrl +Shift +V 才能复制黏贴文本,着实不习惯。另外提一句 怎么这里wiringPI的代码一股Arduino的味道 一v一

参考文档:

树莓派3QT+wiringPI控制GPIO输入和输出
树莓派系列-6-Qt控制树莓派GPIO(3B V1.2)

你可能感兴趣的:(qt,ui,开发语言)