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

今日继续学习树莓派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.mfbz.cn/a/778943.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

并发编程(多线程)带来了哪些问题?

前面我们了解到多线程技术有很多好处,比如说多线程可以充分利用多核 CPU 的计算能力,那多线程难道就没有一点缺点吗? 有。 多线程很难掌握,稍不注意,就容易使程序崩溃。我们以在路上开车为例: 在一个单向行驶的道路上,每辆汽车都遵守交通规则,这时候整体通行是正常的…

win10使用小技巧一

1. 查看电脑IP地址 步骤&#xff1a;按WinR打开运行框 → 输入cmd点确定 → 输入ipconfig回车 → 查看IP地址。 2. 解决网页文字不能复制 步骤&#xff1a;按F12 → 调试框里点击设置 → 向下滑找到 禁用 JavaScript → 勾选 → 复制文字。 3. 解决电脑不能上网 方法一&…

Sentinel限流算法总结

文章目录 一、线程隔离二、滑动窗口算法三、令牌桶算法四、漏桶算法 一、线程隔离 线程隔离有两种方式实现&#xff1a; 线程池隔离&#xff1a;给每个服务调用业务分配一个线程池&#xff0c;利用线程池本身实现隔离效果信号量隔离&#xff1a;不创建线程池&#xff0c;而是…

Qt Creator配置以及使用Git

Qt Creator配置以及使用Git 引言一、Qt Creator配置git二、Qt Creator使用git2.1 创建git仓库 or git项目导入Qt2.2 配置远端&#xff0c;拉代码 or 上传代码2.3 查看更改2.4 更多细节可参考官方文档 三、参考的博客以及文档 引言 Qt Creator配置Git之后&#xff0c;可以看作是…

最新CorelDRAW2024设计师的必备神器!

Hey&#xff0c;各位创意小能手和设计爱好者们&#xff0c;今天要跟大家安利一个超级给力的设计软件——CorelDRAW 2024&#xff01;如果你还在用那些老旧的设计工具&#xff0c;那你就OUT啦&#xff01;&#x1f389;&#x1f3a8; CorelDRAW全系列汉化版下载网盘分享链接&am…

新书速览|UML 2.5基础、建模与设计实践

《UML 2.5基础、建模与设计实战》 本书内容 UML是以面向对象图形的方式来描述任何类型的系统&#xff0c;应用领域非常广泛&#xff0c;其中常用的是建立软件系统的模型。《UML 2.5基础、建模与设计实践》基于draw.io开源免费软件&#xff0c;全面讲解UML 2.5的基本概念和建模…

【C++】 解决 C++ 语言报错:Double Free or Corruption

文章目录 引言 双重释放或内存破坏&#xff08;Double Free or Corruption&#xff09;是 C 编程中常见且严重的内存管理问题。当程序尝试多次释放同一块内存或对已经释放的内存进行操作时&#xff0c;就会导致双重释放或内存破坏错误。这种错误不仅会导致程序崩溃&#xff0c…

移动应用开发课设——原神小助手文档(1)

2023年末&#xff0c;做的移动应用开发课设&#xff0c;分还算高&#xff0c;项目地址&#xff1a;有帮助的话&#xff0c;点个赞和星呗~ GitHub - blhqwjs/-GenShin_imp: 2023年移动应用开发课设 本文按照毕业论文要求来写&#xff0c;希望对大家有所帮助。 xxxx大学课程设计报…

SpringBoot项目练习

文章目录 SpringBootVue后台管理系统所需软件下载、安装、版本查询Vue搭建一个简单的Vue项目 Spring项目1项目架构 SpringBootVue后台管理系统 学习视频&#xff1a; https://www.bilibili.com/video/BV1U44y1W77D/?spm_id_from333.337.search-card.all.click&vd_sourcec…

基于SpringBoot的休闲娱乐代理售票系统

本系统主要包括管理员和用户两个角色组成&#xff1b;主要包括&#xff1a;首页、个人中心、用户管理、折扣票管理、分类管理、订单信息管理、退票信息管理、出票信息管理、系统管理等功能的管理系统。 &#x1f495;&#x1f495;作者&#xff1a;Weirdo &#x1f495;&#x…

机器学习——无监督学习(k-means算法)

1、K-Means聚类算法 K表示超参数个数&#xff0c;如分成几个类别&#xff0c;K值就取多少。若无需求&#xff0c;可使用网格搜索找到最佳的K。 步骤&#xff1a; 1、随机设置K个特征空间内的点作为初始聚类中心&#xff1b; 2、对于其他每个点计算到K个中心的距离&#xff0c;…

[BJDCTF 2nd]简单注入

sqlsqlsqlsqlsql又来喽 过滤了单双引号&#xff0c;等于符号&#xff0c;还有select等&#xff0c;但是这里没有二次注入 。扫描发现hint.txt 看出题人的意思是&#xff0c;得到密码即可获得flag。 select * from users where username$_POST["username"] and passw…

CTFShow的RE题(二)

逆向5 附件无后缀&#xff0c;查一下是zip&#xff0c;解压得到一个exe一个dll文件。 往下继续看 但也根进去看看 发现是在加载的dll文件 还有一个返回时调用的函数 发现是打印函数 根据以往的经验应该是要跳转到这里&#xff0c;动调一下。 发现exe链接了dll&#xff0c;…

昇思25天学习打卡营第2天|MindSpore快速入门

打卡 目录 打卡 快速入门案例&#xff1a;minist图像数据识别任务 案例任务说明 流程 1 加载并处理数据集 2 模型网络构建与定义 3 模型约束定义 4 模型训练 5 模型保存 6 模型推理 相关参考文档入门理解 MindSpore数据处理引擎 模型网络参数初始化 模型优化器 …

(一)项目实践-利用Appdesigner制作目标跟踪仿真软件

目录 前言 一、软件页面设计 二、仿真部分 &#xff08;一&#xff09;参数输入 &#xff08;二&#xff09;绘图部分 &#xff08;三&#xff09;目标追踪程序 总结 前言 本博客有一个专栏用来介绍有关MATLAB中的Appdesigner的操作以及使用&#xff0c;本文是为了深化读者对于…

昇思25天学习打卡营第11天|ResNet50图像分类

文章目录 昇思MindSpore应用实践基于MindSpore的ResNet50图像分类1、ResNet50 简介2、数据集预处理及可视化3、构建网络构建 Building Block构建 Bottleneck Block构建 ResNet50 网络 4、模型训练5、图像分类模型推理 Reference 昇思MindSpore应用实践 本系列文章主要用于记录…

Java | Leetcode Java题解之第217题存在重复元素

题目&#xff1a; 题解&#xff1a; class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set new HashSet<Integer>();for (int x : nums) {if (!set.add(x)) {return true;}}return false;} }

【JavaWeb程序设计】JSP内置对象

目录 一、通过测试以下代码&#xff0c;了解各种隐含对象与作用域变量的使用 1. request隐含对象的使用&#xff08;request.jsp&#xff09; 2. out隐含对象的使用&#xff08;out.jsp&#xff09; 3. application隐含对象的使用&#xff08;application.jsp&#xff09; …

ONLYOFFICE最新8.1版本——桌面编辑器简单测评

前言 大家好&#xff0c;我是小雨&#xff0c;看到最近ONLYOFFICE更新了最新的版本&#xff0c;更新了一下当前版本来具体的测评一下&#xff0c;先来看看官网提供的各类更新信息&#xff0c;下面是我找到的三个主页&#xff0c;包括功能演示链接&#xff0c;官网连接以及专门…

UDP协议:独特之处及其在网络通信中的应用

在网络通信领域&#xff0c;UDP&#xff08;用户数据报协议&#xff0c;User Datagram Protocol&#xff09;是一种广泛使用的传输层协议。与TCP&#xff08;传输控制协议&#xff0c;Transmission Control Protocol&#xff09;相比&#xff0c;UDP具有其独特的特点和适用场景…