当前位置: 首页 > news >正文

二、QT和驱动模块实现智能家居-----5、通过QT控制LED

在QT界面,我们要实现点击“LED”按钮就可以控制板子上的LED。LED接线图如下:

在Linux 系统里,我们可以使用2种方法去操作上面的LED:

① 使用GPIO SYSFS系统:这需要一定的硬件知识,需要设置引脚的方向、数值。

② 使用驱动程序:无需硬件知识,使用open/read/write接口调用驱动即可。

1、GPIO SYSFS 系统

一个芯片内部,有多个 GPIO 控制器,每个 GPIO 控制器有多个引脚。在 /sys/bus/gpio/devices 目录下,列出了所有的 GPIO 控制器,如下表示有 6 个 GPIO 控制器:

# ls /sys/bus/gpio/devices 
gpiochip0  gpiochip1  gpiochip2  gpiochip3  gpiochip4  gpiochip5 

怎么查看每个GPIO 控制器的详细信息?/sys/class/gpio/gpiochipXXX 下,有这些信息:

ls /sys/class/gpio/gpiochip* -d1  //列出GPIOx的信息/sys/class/gpio/gpiochip0 
/sys/class/gpio/gpiochip128 
/sys/class/gpio/gpiochip32 
/sys/class/gpio/gpiochip504 
/sys/class/gpio/gpiochip64 
/sys/class/gpio/gpiochip96 
ls /sys/class/gpio/gpiochip0 -1 //列出GPIO0的信息
base      // 这个GPIO控制器的GPIO编号基值 
device 
label     // 名字 
ngpio     // 引脚个数 
power 
subsystem 
uevent 
cat /sys/class/gpio/gpiochip0/label //GPIO0的标签209c000.gpio 

查看GPIO使用情况,执行如下命令即可:

cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 0-31, parent: platform/209c000.gpio, 209c000.gpio: gpio-5   (                    |goodix_ts_int       ) in  hi IRQ gpio-19  (                    |cd                  ) in  hi IRQ gpio-20  (                    |spi_imx             ) out hi gpiochip1: GPIOs 32-63, parent: platform/20a0000.gpio, 20a0000.gpio: gpiochip2: GPIOs 64-95, parent: platform/20a4000.gpio, 20a4000.gpio: gpio-68  (                    |lcdif_rst           ) out hi gpiochip3: GPIOs 96-127, parent: platform/20a8000.gpio, 20a8000.gpio: gpio-110 (                    |User2 Button        ) in  hi IRQ gpio-120 (                    |spi_imx             ) in  lo gpio-122 (                    |spi_imx             ) in  lo gpiochip4: GPIOs 128-159, parent: platform/20ac000.gpio, 20ac000.gpio: gpio-129 (                    |User1 Button        ) in  hi IRQ gpio-130 (                    |goodix_ts_rst       ) out hi gpio-133 (                    |sysfs               ) out hi gpio-134 (                    |phy-reset           ) out hi gpio-135 (                    |spi32766.0          ) out hi gpio-136 (                    |?                   ) out lo gpio-137 (                    |phy-reset           ) out hi gpio-138 (                    |spi4                ) out hi gpio-139 (                    |spi4                ) out lo 

2、通过SYSFS使用GPIO

1.)确定GPIO编号

查看每个/sys/class/gpio/gpiochipXXX目录下的label,确定是你要用的GPIO控制器,也称为GPIO Bank。 根据它名字gpiochipXXX,就可以知道基值是XXX基值加上引脚offset,就是这个引脚的编号。

注:对于GPIOx_y,一般有一个公式:编号=(x-1)*32+y。x从1开始。 在IMX6ULL的原理图里,LED使用的引脚是GPIO5_3,它的编号为:(5-1)*32+3=131。

2) 导出/设置方向/读写值

举例:IMX6ULL使用的GPIO5_3引脚编号是131,可以如下操作:

echo 131 > /sys/class/gpio/export 
echo out > /sys/class/gpio/gpio131/direction 
echo 1 > /sys/class/gpio/gpio131/value 
echo 131 > /sys/class/gpio/unexport 

如果GPIO5_3是按键,可以如下读取它的值:

echo 131 > /sys/class/gpio/export 
echo in > /sys/class/gpio/gpio131/direction 
cat /sys/class/gpio/gpio131/value 
echo 131 > /sys/class/gpio/unexport 

3)编写应用程序

打开QT在原文件Sources内新建一个led.cpp

①按键初始化程序

void LED_Init(void)
{static int fd;fd = open("/sys/class/gpio/export", WRONLY);if(fd < 0)
{qDebug() << "open /sys/class/gpio/export error";return;
}write(fd, "131\n", 4);close(fd);fd = open("/sys/class/gpio/export", WRONLY);if(fd < 0)
{qDebug() << "open /sys/class/gpio/gpio131/direction error";return;
}write(fd, "out\n", 4);close(fd);
}

②:按键控制程序

void LED_Control(int on)
{static fd = -1;if(fd == -1)
{fd = open("/sys/class/gpio/gpio131/value", O_RDWR);return;
}if(fd < 0)
{qDebug() << "open /sys/class/gpio/gpio131/valuen error";return;
}if(on)
{write(fd, "0\n", 2);
}
else
{write(fd, "1\n", 2);
}
}

然后在Header文件下编写led.h文件

最后主函数调用初始化程序,主窗函数调用控制函数。

相关文章:

二、QT和驱动模块实现智能家居-----5、通过QT控制LED

在QT界面&#xff0c;我们要实现点击“LED”按钮就可以控制板子上的LED。LED接线图如下&#xff1a; 在Linux 系统里&#xff0c;我们可以使用2种方法去操作上面的LED&#xff1a; ① 使用GPIO SYSFS系统&#xff1a;这需要一定的硬件知识&#xff0c;需要设置引脚的方向、数值…...

基于Android平台的SOME/IP测试模块 EPT-ETS

在汽车产业智能化、网联化的时代浪潮中&#xff0c;汽车电子系统正经历着前所未有的变革。SOME/IP&#xff08;Scalable service-Oriented MiddlewarE over IP&#xff09;协议作为汽车电子通信领域的关键技术&#xff0c;其稳定性、可靠性与高效性对于整车性能的提升起着至关重…...

QT实现计算器

1&#xff1a;在注册登录的练习里面&#xff0c; 追加一个QListWidget 项目列表 要求&#xff1a;点击注册之后&#xff0c;将账号显示到 listWidget上面去 以及&#xff0c;在listWidget中双击某个账号的时候&#xff0c;将该账号删除 Widget.h #ifndef WIDGET_H #define…...

Go红队开发—语法补充

文章目录 错误控制使用自定义错误类型错误包装errors.Is 和 errors.Aspanic捕获、recover 、defer错误控制练习 接口结构体实现接口基本类型实现接口切片实现接口 接口练习Embed嵌入文件 之前有师傅问这个系列好像跟红队没啥关系&#xff0c;前几期确实没啥关系&#xff0c;因为…...

二、Redis 安装与基本配置:全平台安装指南 服务器配置详解

Redis 安装与基本配置:全平台安装指南 & 服务器配置详解 Redis 作为高性能的内存数据库,其安装和配置是使用 Redis 的第一步。本篇文章将全面介绍 Redis 的安装方式,覆盖 Windows、Linux、Docker 环境,并详细讲解 Redis 的基础配置,包括 持久化、日志、端口设置等。此…...

halcon学习笔记1

环境的搭建就不说了&#xff0c;主要是作者在入职后的实际学习与实践。 打开应用程序 这里作者的个人理解是1号区域主要是可以观察到读取的图像以及后续对图像进行何种操作&#xff0c;2的算子类似于Opencv中的API&#xff0c;可以在上面进行参数的调整&#xff0c;例如read_I…...

解决Docker拉取镜像超时错误,docker: Error response from daemon:

当使用docker pull或docker run时遇到net/http: request canceled while waiting for connection的报错&#xff0c;说明Docker客户端在访问Docker Hub时出现网络连接问题。可以不用挂加速器也能解决&#xff0c;linux不好用clash。以下是经过验证的方法&#xff08;感谢轩辕镜…...

Masscan下载Linux安装

masscan 是一款高速的端口扫描工具&#xff0c;能够在极短的时间内扫描大量IP地址和端口。以下是关于如何在Linux系统上下载并安装 masscan 的详细步骤。 ### 通过包管理器安装 对于一些Linux发行版&#xff0c;你可以直接使用系统的包管理器来安装 masscan。例如&#xff0c…...

js的简单介绍

一.javascript&#xff08;是什么&#xff09; 是一种运行在客户端(浏览器)的编程语言&#xff0c;实现人机交互效果 作用 网页特效&#xff08;监听客户的一些行为让网页做出对应的反馈&#xff09;表单验证(针对表格数据的合法性进行判断)数据交互(获取后台的数据&#xf…...

神经网络 - 激活函数(Swish函数、GELU函数)

一、Swish 函数 Swish 函数是一种较新的激活函数&#xff0c;由 Ramachandran 等人在 2017 年提出&#xff0c;其数学表达式通常为 其中 σ(x) 是 Sigmoid 函数&#xff08;Logistic 函数&#xff09;。 如何理解 Swish 函数 自门控特性 Swish 函数可以看作是对输入 x 进行“…...

关于后端使用Boolean或boolean时前端收到的参数的区别

当后端使用的是Boolean时&#xff0c;调用的方法是setIsLoginUser&#xff0c;前端收到的参数的参数名是isLoginUser 而当后端使用的是boolean时&#xff0c;调用的方法是setLoginUser&#xff0c;前端收到的参数的参数名是loginUser 封装类和基本数据类型在使用时需要注意这…...

笔记:代码随想录算法训练营第35天: 01背包问题 二维、 01背包问题 一维 、LeetCode416. 分割等和子集

学习资料&#xff1a;代码随想录 这一块儿学得挺痛苦 注&#xff1a;文中含大模型生成内容 动态规划&#xff1a;01背包理论基础 卡码网第46题 思路&#xff1a;五部曲 定义&#xff1a;dp[i][j]为第i个物品背包容量为j&#xff0c;能装下的最大价值 递推公式&#xff1…...

安装 Windows Docker Desktop - WSL问题

一、关联文章: 1、Docker Desktop 安装使用教程 2、家庭版 Windows 安装 Docker 没有 Hyper-V 问题 3、打开 Windows Docker Desktop 出现 Docker Engine Stopped 问题 二、问题解析 打开 Docker Desktop 出现问题,如下: Docker Desktop - WSL update failed An error o…...

Spring MVC 返回数据

目录 1、什么是 SpringMVC2、返回数据2.1、返回 JSON 对象2.2、请求转发2.3、请求重定向2.4、自定义返回的内容 1、什么是 SpringMVC 1、Tomcat 和 Servlet 分别是什么&#xff1f;有什么关系&#xff1f; Servlet 是 java 官方定义的 web 开发的标准规范&#xff1b;Tomcat 是…...

QT-信号与槽

1.在注册登录的练习里面&#xff0c;追加一个QListWidget项目列表 要求:点击注册之后&#xff0c;将账号显示到列表窗口小部件上面去 以及&#xff0c;在列表窗口小部件中双击某个账号的时候&#xff0c;将该账号删除 头文件 #ifndef WIDGET_H #define WIDGET_H #include <…...

版图自动化连接算法开发 00001 ------ 直接连接两个给定的坐标点

版图自动化连接算法开发 00001 ------ 直接连接两个给定的坐标点 引言正文定义坐标点的类绘图显示代码直接连接两个坐标点引言 由于人工智能的加速普及,每次手动绘制版图都会觉得特别繁琐,作者本人在想可否搞一个自动化连接器件端口的算法,后期可以根据一些设定的限制进行避…...

迷你世界脚本方块接口:Block

方块接口&#xff1a;Block 彼得兔 更新时间: 2024-08-27 11:04:56 具体函数名及描述如下&#xff1a; 序号 函数名 函数描述 1 isSolidBlock(...) 是否是固体方块 2 isLiquidBlock(...) 是否是液体方块 3 isAirBlock(...) 是否是气体方块 4 getBl…...

打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线(第一天)

打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线&#xff08;第一天&#xff09; 前言最后 前言 说真的&#xff0c;用Unity工作这几年&#xff0c;经历的项目大大小小&#xff0c;对于场景的渲染算是有一定的经验&#xff0c;但涉及到HDRP高清渲染管线的了解&#xff0…...

Docker项目部署-部署前端

nginx.conf文件内容如下。 worker_processes 1;events {worker_connections 1024; }http {include mime.types;default_type application/json;sendfile on;keepalive_timeout 65;server {listen 18080;# 指定前端项目所在的位置location / {root /usr/…...

【向量数据库Weaviate】与ChromaDB的差异、优劣

以下是 Weaviate 和 ChromaDB 的详细对比&#xff0c;涵盖设计目标、核心功能、性能、适用场景及优劣势分析&#xff1a; 1. 核心定位与设计目标 维度WeaviateChromaDB类型向量数据库 图数据库&#xff08;支持混合搜索&#xff09;轻量级纯向量数据库&#xff08;专注嵌入存…...

终极小说下载器:一键保存全网小说,打造你的私人数字图书馆

终极小说下载器&#xff1a;一键保存全网小说&#xff0c;打造你的私人数字图书馆 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 你是否遇到过这样的情况&#xff1a;追更的小说突然…...

NSSCTF做题记录九 | [HUBUCTF 2022 新生赛]checkin

[HUBUCTF 2022 新生赛]checkin <?php show_source(__FILE__); //高亮显示当前代码 $username "this_is_secret"; //给$username赋值 $password "this_is_not_known_to_you"; //给$password赋值 include("flag.php");//here I chan…...

HARMONYOS应用实例258:反比例函数图像

反比例函数图像 功能:绘制双曲线,点击图像上的点显示坐标,验证 xy=kxy=kxy=k 的恒等关系。 应用功能: 绘制反比例函数双曲线图像 y = k/x 可调节k值,范围从1到20...

一套万能的异步处理方案!(珍藏版)

前言 良好的系统设计必须要做到开闭原则&#xff0c;随着业务的不断迭代更新&#xff0c;核心代码也会被不断改动&#xff0c;出错的概率也会大大增加。但是大部分增加的功能都是在扩展原有的功能&#xff0c;既要保证性能又要保证质量&#xff0c;我们往往都会使用异步线程池…...

GLM-4.1V-9B-Base基础教程:Web界面支持的图片格式/大小/分辨率清单

GLM-4.1V-9B-Base基础教程&#xff1a;Web界面支持的图片格式/大小/分辨率清单 1. 模型简介 GLM-4.1V-9B-Base是智谱开源的视觉多模态理解模型&#xff0c;专门用于处理图像内容识别、场景描述、目标问答和中文视觉理解任务。这个模型已经完成了Web化封装&#xff0c;可以直接…...

手把手教你用AI超分镜像:低清图片3倍放大,细节修复超简单

手把手教你用AI超分镜像&#xff1a;低清图片3倍放大&#xff0c;细节修复超简单 1. 为什么你需要这个AI超分工具&#xff1f; 你是不是也遇到过这些头疼的情况&#xff1f; 翻出十几年前的老照片&#xff0c;想打印出来&#xff0c;却发现画面模糊得像蒙了一层雾。从网上下…...

Ostrakon-VL-8B功能体验:图文对话模型在零售场景的真实表现

Ostrakon-VL-8B功能体验&#xff1a;图文对话模型在零售场景的真实表现 1. 零售场景下的AI助手需求 在零售行业&#xff0c;每天都有大量需要人工处理的视觉任务&#xff1a;商品识别、货架检查、库存盘点、价格标签核对等。传统方法要么依赖人工检查效率低下&#xff0c;要么…...

深度学习驱动的光谱超分辨率:技术演进与应用前景

1. 光谱超分辨率技术的前世今生 我第一次接触光谱超分辨率技术是在2015年&#xff0c;当时还在用传统的线性插值方法处理遥感图像。记得有次为了获取一片农田的高光谱数据&#xff0c;团队不得不动用昂贵的机载传感器&#xff0c;结果因为天气原因导致数据质量极差。正是这次经…...

从MATLAB验证到FPGA上板:双频信号叠加的完整开发闭环实战

从MATLAB验证到FPGA上板&#xff1a;双频信号叠加的完整开发闭环实战 在数字信号处理领域&#xff0c;实现双频信号的精确叠加是一个常见但极具挑战性的任务。无论是通信系统中的载波调制&#xff0c;还是音频处理中的音效合成&#xff0c;都需要工程师能够准确地在硬件层面实现…...

mkcert 命令文档 - 本地 HTTPS 开发证书生成工具详解

1. 命令简介mkcert 是一个用 Go 语言编写的、零配置的本地开发用自签名证书生成工具。它能够自动创建并安装本地证书颁发机构&#xff08;CA&#xff09;到系统的信任存储中&#xff0c;并生成受本地信任的开发证书&#xff0c;大幅简化 HTTPS 本地开发环境的搭建过程&#xff…...