当前位置:网站首页>树莓派:双色LED灯实验
树莓派:双色LED灯实验
2022-04-23 06:10:00 【林-金鹏】
简介
双色LED灯(双基色 LED灯),是指模块只能显示2种颜色,一般是红色和绿色,可以有三种状态:灭、颜色1亮、颜色2亮;根据颜色组合的不同,分为红蓝双色,黄蓝双色,红绿双色等等。
双色 LED常于指示状态:比如红色表示设备异常,绿色表示正常。
一、实验效果
树莓派:双色LED灯实验
二、组件
1、树莓派主板*1
2、树莓派电源*1
3、40P软排线*1
4、双色LED模块*1
5、面包板*1
6、跳线若干
三、实验原理
将引脚S(绿色)和中间管脚R(红色)连接到树莓派的GPO 接口上,对树莓派进行编程控制,将LED的颜色从红色变为绿色,然后使用PWM混合其他颜色。
该模块的原理图如下所示:
四、实验步骤
建立电路:
树莓派 | 面包板 | 双色LED模块 |
---|---|---|
GPIO1 | GPIO18 | G(S) |
GPIO0 | GPIO17 | R(中间) |
GND | GND | GND |
五、代码实现
WM的频率:P决定了输出的数字信号on (1) 和 off(0 )的切换速度,频率越高,切换就越快。
占空比:指一串理想脉冲序列中,正脉冲的持续时间与脉冲总周期的比值,用来调节灯的亮度。
import RPi.GPIO as GPIO
import time
colors = [0xFF00, 0x00FF, 0x0FF0, 0xF00F]
makerobo_pins = (11, 12) # PIN管脚字典
GPIO.setmode(GPIO.BOARD) # 采用实际的物理管脚给GPIO口
GPIO.setwarnings(False) # 去除GPIO口警告
GPIO.setup(makerobo_pins, GPIO.OUT) # 设置Pin模式为输出模式
GPIO.output(makerobo_pins, GPIO.LOW) # 设置Pin管脚为低电平(0V)关闭LED
p_R = GPIO.PWM(makerobo_pins[0], 2000) # 设置频率为2KHz
p_G = GPIO.PWM(makerobo_pins[1], 2000) # 设置频率为2KHz
# 初始化占空比为0(led关闭)
p_R.start(0)
p_G.start(0)
def makerobo_pwm_map(x, in_min, in_max, out_min, out_max):
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
def makerobo_set_Color(col): # 例如:col = 0x1122
R_val = col >> 8
G_val = col & 0x00FF
# 把0-255的范围同比例缩小到0-100之间
R_val = makerobo_pwm_map(R_val, 0, 255, 0, 100)
G_val = makerobo_pwm_map(G_val, 0, 255, 0, 100)
p_R.ChangeDutyCycle(R_val) # 改变占空比
p_G.ChangeDutyCycle(G_val) # 改变占空比
# 调用循环函数
def makerobo_loop():
while True:
for col in colors:
makerobo_set_Color(col)
time.sleep(0.5)
# 释放资源
def makerobo_destroy():
p_G.stop()
p_R.stop()
GPIO.output(makerobo_pins, GPIO.LOW) # 关闭所有LED
GPIO.cleanup() # 释放资源
# 程序入口
if __name__ == "__main__":
try:
makerobo_loop() # 调用循环函数
except KeyboardInterrupt: # 当按下Ctrl+C时,将执行destroy()子程序。
makerobo_destroy() # 释放资源
版权声明
本文为[林-金鹏]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_46105038/article/details/120304693
边栏推荐
猜你喜欢
Binder机制原理
常用UI控件简写名
基于BottomNavigationView实现底部导航栏
Component based learning (3) path and group annotations in arouter
Miscellaneous learning
Viewpager2 realizes Gallery effect. After notifydatasetchanged, pagetransformer displays abnormal interface deformation
【2021年新书推荐】Artificial Intelligence for IoT Cookbook
开篇:双指针仪表盘的识别
Bottomsheetdialogfragment conflicts with listview recyclerview Scrollview sliding
【2021年新书推荐】Practical IoT Hacking
随机推荐
MySQL notes 1_ database
微信小程序 使用wxml2canvas插件生成图片部分问题记录
个人博客网站搭建
[recommendation for new books in 2021] professional azure SQL managed database administration
Android清除应用缓存
ffmpeg常用命令
Using queue to realize stack
“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
【2021年新书推荐】Practical IoT Hacking
【2021年新书推荐】Practical Node-RED Programming
三种实现ImageView以自身中心为原点旋转的方法
[多屏互动] 实现双多屏异显二:startActivity方式
[2021 book recommendation] artistic intelligence for IOT Cookbook
第三篇:docker安装mysql容器(自定义端口)
adb shell 常用命令
Explore how @ modelandview can forward data and pages through the source code
组件化学习(2)Arouter原理学习
oracle创建表空间和修改用户默认表空间
Binder机制原理
Using stack to realize queue out and in