树莓派4B学习笔记17:RBG_LED全色域灯的驱动模块编写

news2025/1/20 15:38:39

今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi)

 本人所用树莓派4B 装载的系统与版本如下:

 版本可用命令 (lsb_release -a) 查询:

 Python 版本3.7.3:

今日学习:RBG_LED全色域灯的驱动模块编写_(if __name__=="__main__")

写一篇比较水的文章测试一下今天刚到手的LED模块,哈哈哈~~~~~~~~~~~~~~~

文章提供测试代码讲解,整体代码贴出、测试效果图、整体工程下载

目录

创建测试文件:

编写RBG_LED.py模块代码:

编写main.py调用模块测试:

测试效果展示:

整体测试工程下载:


创建测试文件:

这里编写的是自己的驱动显示模块,因此会有个main.py调用它来测试是否正常能运行

我将这个测试文件RBG_LED文件夹整个放在了树莓派如下目录:

/home/pi/code_examples/

编写RBG_LED.py模块代码:

这个目前的RBG_LED模块代码 包括了初始化LED函数以及各种颜色的设定,以及一个用于测试各种颜色显示的测试函数

代码所在文件命名为:RBG_LED.py

# coding: utf-8 
import RPi.GPIO as GPIO
import time

# 定义RGB LED连接的GPIO引脚  
RGB_RED = 18  
RGB_GREEN = 19  
RGB_BLUE = 20 

#初始化LED
def Init_RBG_LED():
    # 设置GPIO模式为BCM(Broadcom SOC channel)  
    GPIO.setmode(GPIO.BCM)
    # 设置引脚为输出模式  
    GPIO.setup(RGB_RED, GPIO.OUT)
    GPIO.setup(RGB_GREEN, GPIO.OUT)
    GPIO.setup(RGB_BLUE, GPIO.OUT)

# 创建一个函数来设置LED颜色(red, green, blue只能GPIO.HIGH,或GPIO.LOW)
def set_led_color(red, green, blue):  
    GPIO.output(RGB_RED, red)  
    GPIO.output(RGB_GREEN, green) 
    GPIO.output(RGB_BLUE, blue) 

#设置LED为红色
def set_red():
    set_led_color(GPIO.HIGH, GPIO.LOW, GPIO.LOW)
# 设置LED为绿色 
def set_green():
    set_led_color(GPIO.LOW, GPIO.HIGH, GPIO.LOW)
# 设置LED为蓝色
def set_blue():
    set_led_color(GPIO.LOW, GPIO.LOW, GPIO.HIGH)
# 设置LED为白色(所有颜色都亮)  
def set_white():
    set_led_color(GPIO.HIGH, GPIO.HIGH, GPIO.HIGH) 
# 设置LED为关闭(所有颜色都熄灭)  
def set_off():
    set_led_color(GPIO.LOW, GPIO.LOW, GPIO.LOW)
# 设置LED为紫色
def set_purple():
    set_led_color(GPIO.HIGH, GPIO.LOW, GPIO.HIGH)
# 设置LED为黄色
def set_yellow():
    set_led_color(GPIO.HIGH, GPIO.HIGH, GPIO.LOW)
# 设置LED为青色
def set_cyan():
    set_led_color(GPIO.LOW, GPIO.HIGH, GPIO.HIGH)

# 示例:闪烁LED(红绿蓝依次闪烁)  
def blink_led():
    try:  
        while True:
            set_white()
            time.sleep(0.55)
            set_red()
            time.sleep(0.55)
            set_green()
            time.sleep(0.55)
            set_blue()
            time.sleep(0.55)
            set_purple()
            time.sleep(0.55)
            set_yellow()
            time.sleep(0.55)
            set_cyan()
            time.sleep(0.55)
    except KeyboardInterrupt:  # 捕获键盘中断以安全退出 <ctrl+c> 
        set_off()                              # 关闭led
        GPIO.cleanup()

if __name__ == "__main__": 
    GPIO.setwarnings(False)      # 禁用GPIO警告
    Init_RBG_LED()                       #初始化LED
    blink_led()                              #彩色闪烁呼吸测试

编写main.py调用模块测试:

如果在定义RGB_REDRGB_GREEN、RGB_BLUE三个有关引脚编号的全局变量的文件和Init_RBG_LED函数位于同一个文件中(RBG_LED.py

并且已经在main.py中正确地导入了RBG_LED模块,那么在main.py调用Init_RBG_LED()函数是没有问题的。

代码所在文件命名为:main.py

# coding: utf-8 
import RBG_LED as LED

LED.Init_RBG_LED()
LED.blink_led()

测试效果展示:

首先使用cd命令进入代码所在目录:

cd /home/pi/code_examples/RBG_LED

再使用python运行脚本:

python3 RBG_LED.py

python3 main.py

循环显示了各个测试函数的设置颜色:(main.py文件效果与RBG_LED.py是一样的)

按<ctrl+c>可以退出并关闭LED

整体测试工程下载:

https://download.csdn.net/download/qq_64257614/89500771

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

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

相关文章

初学者轻松搞定19个经典的Python程序以及代码演示

Python的经典程序展示了Python语言基本特性和功能的简单示例,这些程序在学习和理解Python编程语言的过程中起着至关重要的作用. 一些常见的经典Python程序及其在学习Python时的功能&#xff1a; 1.Hello, World! print("Hello, World!")解释:这是Python的基本输出…

(单机架设教程)凯旋|当年的QQ游戏

前言 今天给大家带来一款单机游戏的架设&#xff1a;凯旋 &#xff0c; 当年的QQ游戏 如今市面上的资源参差不齐&#xff0c;大部分的都不能运行&#xff0c;本人亲自测试&#xff0c;运行视频如下&#xff1a; 凯旋单机 搭建教程 此游戏架设需要安装虚拟机&#xff0c; 没有…

【面试系列】Python 高频面试题

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

基于源码详解ThreadPoolExecutor实现原理

个人博客地址 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog 内容拆分 这里算是一个总集&#xff0c;内容太多&#xff0c;拆分成几个比较重要的小的模块&#xff1a; ThreadPoolExecutor基于ctl变量的声明周期管理 | iwts’s blog ThreadPoolExecutor 工作线程…

【PL理论深化】(13) 变量与环境:文法结构 | 真假表达式:isZero E | let 表达式叠放 | 定义的规则 | 条件语句的使用

&#x1f4ac; 写在前面&#xff1a;从现在开始&#xff0c;让我们正式设计和实现编程语言。首先&#xff0c;让我们扩展在之前定义的整数表达式语言&#xff0c;以便可以使用变量和条件表达式。 目录 0x00 文法结构 0x01 真假表达式&#xff1a;isZero E 0x02 let 表达式叠…

1-5题查询 - 高频 SQL 50 题基础版

目录 1. 相关知识点2. 例题2.1.可回收且低脂的产品2.2.寻找用户推荐人2.3.大的国家2.4. 文章浏览 I2.5. 无效的推文 1. 相关知识点 sql判断&#xff0c;不包含null&#xff0c;判断不出来distinct是通过查询的结果来去除重复记录ASC升序计算字符长度 CHAR_LENGTH() 或 LENGTH(…

LeetCode-Leetcode 1120:子树的最大平均值

LeetCode-Leetcode 1120&#xff1a;子树的最大平均值 题目描述&#xff1a;解题思路一&#xff1a;递归解题思路二&#xff1a;0解题思路三&#xff1a;0 题目描述&#xff1a; 给你一棵二叉树的根节点 root&#xff0c;找出这棵树的 每一棵 子树的 平均值 中的 最大 值。 子…

文章浮现之单细胞VDJ的柱状图

应各位老师的需求复现一篇文章的中的某个图 具体复现图5的整个思路图&#xff0c;这里没有原始数据&#xff0c;所以我使用虚拟生产的metadata进行画图 不废话直接上代码&#xff0c;先上python的代码的结果图 import matplotlib.pyplot as plt import numpy as np# 数据&#…

RocketMQ常用基本操作

文章中的rabbitmq使用的是rocketmq-all-5.1.3-bin-release版本&#xff0c;需要安装包的可自行下载 RockerMQ启动停止命令 启动命令 nohup sh bin/mqnamesrv & nohup sh bin/mqbroker -n localhost:9876 --enable-proxy & 查看日志 tail -f ~/logs/rocketmqlogs/…

sqlmap注入详解

免责声明:本文仅做分享... 目录 1.介绍 2.特点 3.下载 4.帮助文档 5.常见命令 指定目标 请求 HTTP cookie头 HTTP User-Agent头 HTTP协议的证书认证 HTTP(S)代理 HTTP请求延迟 设定超时时间 设定重试超时 设定随机改变的参数值 利用正则过滤目标网址 避免过多的…

江大白 | 何凯明入职 MIT,首次带队提出Diffusion Loss,扩散模型思想提升生成速度和效果 !

本文来源公众号“江大白”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;何凯明入职 MIT&#xff0c;首次带队提出Diffusion Loss&#xff0c;扩散模型思想提升生成速度和效果 &#xff01; 导读 在图像生成领域中&#xff0c;作…

在数字化转型中,中小企业如何打造数字化产品和服务?

引言&#xff1a;随着社会的发展和消费者行为的变化&#xff0c;市场对数字化产品和服务的需求日益增长。中小企业需要紧跟这一趋势&#xff0c;通过开发数字化产品和服务来满足消费者的新需求。云计算、大数据、人工智能等先进技术的出现&#xff0c;为中小企业提供了更多的机…

志愿填报指南:为什么我强烈建议你报考计算机专业

首先恭喜2024届高考的同学们&#xff0c;你们已经通过了高考的考验&#xff0c;即将进入人生的新阶段——大学。 现在正是高考完填报志愿的时刻&#xff0c;Left听到身边朋友提到报考志愿的诸多问题&#xff1a; 志愿填报怎么填&#xff1f;我要报考什么专业&#xff1f;这个…

基于线调频小波变换的非平稳信号分析方法(MATLAB)

信号处理领域学者为了改进小波变换在各时频区间能量聚集性不高的缺点&#xff0c;有学者在小波分析基础上引入调频算子构成了线性调频小波变换&#xff0c;线调频小波一方面继承了小波变换的理论完善性&#xff0c;另一方面用一个新的参数&#xff08;线调频参数&#xff09;刻…

ONLYOFFICE 桌面编辑器 8.1 现已发布:功能完善的 PDF 编辑器、幻灯片版式、改进从右至左显示、新的本地化选项等

继 ONLYOFFICE 文档 8.1 发布后&#xff0c;适用于 Linux、Windows 和 macOS 的 ONLYOFFICE 桌面应用程序最新版本也已推出。它具有在线套件的最主要功能&#xff0c;例如功能齐全的 PDF 编辑器、演示文稿中的幻灯片版式、改进的 RTL 支持、新的本地化选项等。 点击进入ONLYOF…

vue中【事件修饰符号】详解

在Vue中&#xff0c;事件修饰符是一种特殊的后缀&#xff0c;用于修改事件触发时的默认行为。以下是Vue中常见的事件修饰符的详细解释&#xff1a; .stop 调用event.stopPropagation()&#xff0c;阻止事件冒泡。当你在嵌套元素中都有相同的事件监听器&#xff08;如click事件…

100张linux C/C++工程师面试高质量图

文章目录 杂项BIOSlinux开机启动流程内核启动流程网络编程网络编程流程tcp状态机三次握手四次断开reactor模型proactor模型select原理poll原理epoll原理文件系统虚拟文件系统文件系统调用阻塞IO非阻塞IO异步IO同步阻塞同步非阻塞IO多路复用进程管理进程状态程序加载内存管理MMU…

【高中数学/基本不等式】已知:x,y皆为正实数,且2xy+x+6y=6 求:x+2y的最小值

【题目】 已知&#xff1a;x,y皆为正实数&#xff0c;且2xyx6y6 求&#xff1a;x2y的最小值 【解答】 解法一&#xff1a;因为2xyx6y6 可转换为(x3)(2y1)-36 得到(x3)(2y1)9 而x2yx3-32y1-1 (x3)(2y1)-4 >2*根号下[(x3)(2y1)]-4 2*3-4 2 解法二&#xff1a…

5.4符号三角形问题

#include<iostream> #include<stdio.h> using namespace std; int half; int ssum; int cnt0;//减号的个数 int n; int p[100][100]; int countt0; void BackTrack(int s) {if(cnt>half||s*(s-1)/2-cnt>half)return ;if(s>n){countt;return ;}for(int i0;…

【从零开始学架构 架构基础】五 架构设计的复杂度来源:低成本、安全、规模

架构设计的复杂度来源其实就是架构设计要解决的问题&#xff0c;主要有如下几个&#xff1a;高性能、高可用、可扩展、低成本、安全、规模。复杂度的关键&#xff0c;就是新旧技术之间不是完全的替代关系&#xff0c;有交叉&#xff0c;有各自的特点&#xff0c;所以才需要具体…