随笔八、LED-RGB灯程控测试

news2024/9/22 21:28:55

目录

1. 泰山派环境

2. 编程控制


1. 泰山派环境

泰山派开发板上有一颗RGB三色LED灯,烧写官方镜像上电后开始闪烁,表示系统已经正常运行。可以在设备树里修改初始状态。

查看电路图知道,RGB是通过GPIO1的B0~B2引脚控制的,低电平点亮。

SDK包含了leds的驱动

root@RK356X:/# ls /sys/class/leds/

mmc0::  rgb-led-b  rgb-led-g  rgb-led-r

进入rgb-led-x可查看相关属性

root@RK356X:/# ls /sys/class/leds/rgb-led-b

brightness  delay_off  delay_on  device  max_brightness  power  subsystem  trigger  uevent

属性说明:
    brightness:用于控制LED亮度。可以通过读写该文件来设置LED的亮度水平。
    device:表示与LED相关的设备路径。
    invert:表示LED的极性翻转。当该值为0时,LED的行为符合正常的预期。当该值为1时,LED的行为与预期相反。
    max_brightness:表示LED可接受的最大亮度值。亮度值在0到max_brightness之间。
    power:表示LED的电源状态。它可以是“on”表示开启,或者“off”表示关闭。
    subsystem:表示该LED设备所属的子系统。
    trigger:表示LED的触发器。它定义了LED的行为模式,如闪烁、呼吸灯等。可以通过写入不同的触发器名称来改变LED的行为。这里列出一些常用触发方式:
            none:禁用触发器,LED保持灭。
            default-on:默认开启触发器,LED在开机时保持常亮。
            heartbeat:心跳触发器,LED呼吸灯效果,类似于心跳的闪烁。
            timer:计时器触发器,LED在特定时间间隔内闪烁。
    uevent:包含有关LED设备的事件信息

brightness赋值1~255控制LED亮度,应该是采用PWM方式,目前实测是不行的,立创方面估计还没改好。我们可以通过赋值0和1去控制LED亮灭状态。

trigger的timer模式应该就是SDK默认设置,控制LED闪烁。

立创文档介绍了在终端采用命令行方式控制LED

#红色LED熄灭

echo "none" > /sys/class/leds/rgb-led-r/trigger

#点亮蓝色LED

echo "1" > /sys/class/leds/rgb-led-b/brightness

把这些命令行打包成脚本sh文件,类似windows系统的bat文件,就可以实现一定程度的控制效果。当然,还是需要用程序去控制这3个LED

2. 编程控制

leds的驱动程序在/sys/class/leds,通过对属性brightness赋值就可以控制LED

/*
 * @Author: mcubbs
 * @Date: 2024-08-31
 * @LastEditTime:
 * @LastEditors:
 * @Description: LED测试
 * @FilePath: /tspi/led-rgb/led-rgb.c
 */

#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <linux/fs.h>
#include <fcntl.h>
#include <string.h>
#include <termios.h>
#include <sys/ioctl.h>

// 端口定义
// LED B - GPIO1_B0 - rgb-led-b
// LED G - GPIO1_B1 - rgb-led-g
// LED R - GPIO1_B2 - rgb-led-r

int main(int argc, char** argv)
{
  const char off[] = "1";
  const char on[] = "0";
  int led_r = -1, led_g = -1, led_b = -1;

  // 配置leds属性brightness
  led_r = open("/sys/class/leds/rgb-led-r/brightness", O_RDWR);
  led_g = open("/sys/class/leds/rgb-led-g/brightness", O_RDWR);
  led_b = open("/sys/class/leds/rgb-led-b/brightness", O_RDWR);
  if (led_r < 0 || led_g < 0 || led_b < 0)
  {
    printf("open rgb-led-x/brightness failed\n");
    return -1;
  }

  printf("test leds begin\n");

  for (int i = 0; i < 10; i++)
  {
    write(led_r, off, strlen(off));
    write(led_g, off, strlen(off));
    write(led_b, off, strlen(off));
    sleep(1);
    write(led_r, on, strlen(on));
    write(led_g, on, strlen(on));
    write(led_b, on, strlen(on));
    sleep(1);
  }
  close(led_r);
  close(led_g);
  close(led_b);

  printf("test leds end\n");

  return 0;
}

make交叉编译后放到开发板上运行,三色(相当于白色)闪烁10次

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2090877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【吊打面试官系列-Redis面试题】Memcache 与 Redis 的区别都有哪些?

大家好&#xff0c;我是锋哥。今天分享关于 【Memcache 与 Redis 的区别都有哪些&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Memcache 与 Redis 的区别都有哪些&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 1、存储方式 Memecach…

Java笔试面试题AI答之面向对象(9)

文章目录 49. 简述Java继承时&#xff0c;类的执行顺序是什么&#xff1f;一、类的静态成员初始化顺序二、对象的初始化顺序三、总结 50. 举例说明什么情况下会更倾向于使用抽象类而不是接口&#xff1f;1. 当需要定义和实现部分通用行为时2. 当需要访问修饰符或方法修饰符时3.…

07.整合Pinia

1. 前言 Pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态。更加契合 VUE3 组合式 API 和 TS 类型支持。想进一步了解&#xff0c;参考官网&#xff1a;https://pinia.vuejs.org/ 如果是使用官方脚手架搭建的工程&#xff0c;选择了 pinia 将会自动帮我…

Git之2.5版本重要特性及用法实例(五十七)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者. 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列…

Qt应用的高分辨率适配

背景 工作中需要面对触控大屏的4K分辨率场景&#xff0c;同时也有越来越多人开始使用高分屏&#xff0c;原来多基于1080p分辨率开发的Qt程序无法很好适配更高的分辨率。 没有特意针对高分辨率场景做适配时&#xff0c;Qt应用的表现通常有两种情况&#xff1a; 分辨率高的情况…

六西格玛管理培训公司 谈 故障树分析(Fault Tree Analysis)

故障树分析&#xff08;Fault Tree Analysis, FTA&#xff09;&#xff1a;一种自顶向下的演绎故障分析工具&#xff0c;其中使用布尔逻辑将一系列较低级别的事件组合起来&#xff0c;用以分析系统的非期望状态。那么&#xff0c;如何使用故障树分析&#xff08;FTA&#xff09…

集成电路学习:什么是CRC循环冗余校验

一、CRC&#xff1a;循环冗余校验 CRC&#xff08;Cyclic Redundancy Check&#xff09;&#xff0c;即循环冗余校验&#xff0c;是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的快速算法。它主要用于检测或校验数据传输或保存后可能出现的错误。CRC利用除法及…

[Labview] 表格改值后单元格编辑功能,更改颜色、字体、颜色等

效果如下所示&#xff1a; 例子中演示了单元格变色&#xff0c;具体需要什么修改&#xff0c;在相同的位置进行操作即可。 检测到[鼠标释放]事件&#xff0c;则记录被选中的单元格。 使用[鼠标按下]事件也可以&#xff0c;不过我个人测试下来&#xff0c;[按下]的判断精准度不…

智能候诊系统 项目源码25287

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运用中&#xff0c;应用软件的工作…

万亿低空经济:无人机飞手考证正当时

随着低空经济的不断发展和国家政策的持续推动&#xff0c;无人机行业正迎来前所未有的发展机遇。低空经济作为一种新兴的综合性经济形态&#xff0c;依托低空空域&#xff0c;通过各类有人驾驶和无人驾驶航空器的低空飞行活动&#xff0c;辐射带动相关领域融合发展。这一领域涉…

视频结构化从入门到精通——GPU主要硬件平台介绍

视频结构化主要硬件平台 1. 深度学习中“硬”和“软”的概念 在深度学习中&#xff0c;“硬”和“软”通常用于描述不同的处理方法或策略&#xff0c;尤其是在解码、编码、推理等任务中。它们反映了算法在处理信息时的确定性和灵活性。 软&#xff08;Soft&#xff09; 处理…

电子检测报告如何盖骑缝章?

电子检测报告如何盖骑缝章&#xff1f;使用e章宝&#xff08;易友EU3000智能盖章软件&#xff09;给电子检测报告盖骑缝章&#xff0c;可以遵循以下步骤进行&#xff1a; 一、准备工作 确保e章宝软件已安装&#xff1a; 在计算机上安装e章宝&#xff08;易友EU3000智能盖章软件…

小程序页面跳转传url参数被截取问题

跳转时处理 const params {url:hhtp://www.baidu.com?a1}const queryString Object.keys(params).map(key > ${encodeURIComponent(key)}${encodeURIComponent(params[key])}).join(&);wx.navigateTo({url: ../../toPageView/toPageView?${queryString},})webview页…

推荐Windows11中帮助提高远程工作效率的6个最佳工具

序言 由于我们中的许多人都在远程工作,Windows 11附带了一些内置的焦点工具来帮助我们完成工作也就不足为奇了。但是,Windows 11究竟为我们这些想要确保我们真正完成工作的专业人士提供了什么?让我们来看看。 专注期和生产力 Windows 11取消了任务栏上的焦点模式,代之以…

李林880重点题推荐

考研倒计时113天&#xff0c;九月份即将来临&#xff0c;目前大家都处在强化阶段的学习中。虽然每个人的复习进度有所不同&#xff0c;但无论进展如何&#xff0c;我们都要保持良好的心态。进度快的同学要继续稳扎稳打&#xff0c;而进度稍慢的同学也不要焦虑&#xff0c;保持专…

部署 Web 项目到 Linux,可以使他人也访问项目的方法

目录 一、环境配置 二、建构项目并打包 三、上传Jar包到服务器, 并运行 3.1 上传Jar包 3.2 运行 jar 包 3.3 开放端口号 四、其他问题 4.1 运行异常问题 4.2 杀掉进程 五、总结 一、环境配置 如果本地项目是SpringBoot项目&#xff0c;使用的数据库是MySQL&#xff…

C语言基础(二十六)

二叉树节点通常包含三个部分&#xff1a;存储数据的部分、指向左子节点的指针、以及指向右子节点的指针。 测试代码&#xff1a; #include "date.h" #include <stdio.h> #include <stdlib.h> #include <time.h> // 定义二叉树节点的结构&a…

Linux虚拟机搭建K8S环境

文章目录 一、环境准备二、系统初始化三、部署master四、添加node节点五、部署网络六、部署dashboard七、登录dashboard面板 一、环境准备 首先在vmware上新建4台相同配置的虚拟机&#xff0c;除了IP和主机名外&#xff0c;其余配置相同。由于是搭建K8S初始环境&#xff0c;没…

Pyqt5高级技巧:多线程任务、窗体交互、常用控件介绍(含基础Demo)

一、多线程任务和多窗体交互 【main】 import MainForm #import CRUD import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBoxif __name__ __main__:app QApplication(sys.argv)MainWindow QMainWindow()ui MainForm.Ui_MainWindow()#也可能是Ui…

算法设计与分析:实验三 回溯法——地图填色问题

实验内容与要求&#xff1a; 问题描述&#xff1a; 我们可以将地图转换为平面图&#xff0c;每个地区变成一个节点&#xff0c;相邻地区用边连接&#xff0c;我们要为这个图形的顶点着色&#xff0c;并且两个顶点通过边连接时必须具有不同的颜色。附件是给出的地图数据&#…