查看40pin状态
gpio readall
各种库齐全
wiringPi库 官方连接
数字输出
- 工程.pro文件中加载wiringPi库
LIBS += -lwiringPi
- mainwindow.cpp添加头文件
#include <wiringPi.h>
- 启动wiring库
wiringPiSetup();
- 设置io为输出
pinMode(0,OUTPUT);
- 控制io状态
digitalWrite(0,HIGH);
digitalWrite(0,LOW);
电路
配合手上德飞莱LY-51s开发板来玩
德飞莱是共阳LED组,负极IO,自带430欧排阻。
因为树莓派的io电压最高3.3v,所以电源连接gpio1 --3.3v。
io使用wpi-0
程序
不喜欢blink
简单程序开灯上边满格,关灯0;
源码
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
void init(); //定义初始化函数
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_openButton_clicked();
void on_closeButton_clicked();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <wiringPi.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
init(); //在构造函数中初始化
}
MainWindow::~MainWindow()
{
digitalWrite(0,1);//在析构函数里边关闭io
delete ui;
}
void MainWindow::on_openButton_clicked()
{
digitalWrite(0,0);
ui->view->setValue(100);
}
void MainWindow::on_closeButton_clicked()
{
digitalWrite(0,1);
ui->view->setValue(0);
}
/*----------------------------------------------
* 定义初始化函数
* ---------------------------------------------*/
void init()
{
wiringPiSetup(); //启动wiring库
pinMode(0,OUTPUT); //设置io
digitalWrite(0,1); //开关io
// MainWindow::ui->view->setValue(0);
}
信号和槽
vs2017+visuaGDB交叉编译的实现见此贴
https://blog.youkuaiyun.com/bad520fuhao/article/details/83117657
数字输入
- 工程.pro文件中加载wiringPi库
LIBS += -lwiringPi
- mainwindow.cpp添加头文件
#include <wiringPi.h>
- 启动wiring库
wiringPiSetup();
- 设置io为输入
pinMode(0,INPUT);
- 控制io状态
digitalRead(0);
电路
同输出一样加一个io使用wpi-1接到矩阵键盘
因为独立按键一端是接地怎么检测电平?
所以还是连到矩阵键盘上按一排都有响应
程序
这个不做窗口
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
void init();
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <wiringPi.h>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
init();
while (1) {
if(digitalRead(1)) digitalWrite(0,0);
else digitalWrite(0,1);
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void init()
{
wiringPiSetup();
pinMode(0,OUTPUT);
pinMode(1,INPUT);
digitalWrite(0,1);
}
本人菜鸟,欢迎指正。