使用树莓派GPIO控制RGB三基色LED

前言

平常我们经常能看到舞台上的LED电子屏非常的漂亮,其实舞台上的LED电子屏都是通过成千上万个RGB三基色LED灯实现的效果。这里我们将使用树莓派的GPIO针脚来控制RGB三基色LED灯的发光,来模拟电子LED屏幕的单个单元的工作原理或者用来做为颜色提示灯来使用。

使用树莓派GPIO控制RGB三基色LED

效果目的

1)熟悉GPIO的接口,输出高低电平来控制三基色RGB的LED灯发光。
2)了解舞台电子屏的基本原理和单元工作情况。
3)了解RGB三基色LED灯的针脚。



硬件连接

首先,RGB三基色LED灯是一种彩色的二极管,它是由4根引脚的S801型号制作而成。因为有4根针脚所以需要四根杜邦线进行连接到树莓派的GPIO接口上。
其次,在树莓派上的GPIO接口使用5V的电源分别把树莓派的GPIO接口的VCC连接到正极上,其他的三根分别是LED的R,G,B三个颜色针脚连接到树莓派的GPIO18,GPIO15,GPIO14上面。具体连接如下图所示:

使用树莓派GPIO控制RGB三基色LED

PYTHON代码

这里使用树莓派上常用的编程语言来控制GPIO,当然你也可以使用C或JAVA等语言控制。 #!/usr/bin/env python
# encoding: utf-8
import RPi.GPIO
import time
R,G,B=15,18,14
RPi.GPIO.setmode(RPi.GPIO.BCM)
RPi.GPIO.setup(R, RPi.GPIO.OUT)
RPi.GPIO.setup(G, RPi.GPIO.OUT)
RPi.GPIO.setup(B, RPi.GPIO.OUT)
pwmG = RPi.GPIO.PWM(G, 70)
pwmB = RPi.GPIO.PWM(B, 70)
pwmR = RPi.GPIO.PWM(R, 70)
#使能
pwmG.start(0)
pwmR.start(0)
pwmB.start(0)
try:
t = 0.4
while True:
# 绿色灯全亮,红灯,蓝灯全暗(绿色)
pwmR.ChangeDutyCycle(100)
pwmG.ChangeDutyCycle(0)
pwmB.ChangeDutyCycle(100)
time.sleep(t)
# 红色灯全亮,蓝灯,绿灯全暗(红色)
pwmR.ChangeDutyCycle(0)
pwmG.ChangeDutyCycle(100)
pwmB.ChangeDutyCycle(100)
time.sleep(t)
# 蓝色灯全亮,红灯,绿灯全暗(蓝色)
pwmR.ChangeDutyCycle(100)
pwmG.ChangeDutyCycle(100)
pwmB.ChangeDutyCycle(0)
time.sleep(t)
# 红灯,绿灯全亮,蓝灯全暗(黄色)
pwmR.ChangeDutyCycle(0)
pwmG.ChangeDutyCycle(0)
pwmB.ChangeDutyCycle(100)
time.sleep(t)
# 红灯,蓝灯全亮,绿灯全暗(洋红色)
pwmR.ChangeDutyCycle(0)
pwmG.ChangeDutyCycle(100)
pwmB.ChangeDutyCycle(0)
time.sleep(t)
# 绿灯,蓝灯全亮,红灯全暗(青色)
pwmR.ChangeDutyCycle(100)
pwmG.ChangeDutyCycle(0)
pwmB.ChangeDutyCycle(0)
time.sleep(t)
# 通过调整红绿蓝LED灯的各个颜色的亮度组合出各种其他颜色
for r in xrange (0, 101, 20):
pwmR.ChangeDutyCycle(r)
for g in xrange (0, 101, 20):
pwmG.ChangeDutyCycle(g)
for b in xrange (0, 101, 20):
pwmB.ChangeDutyCycle(b)
time.sleep(0.01)
except KeyboardInterrupt:
pass
pwmR.stop()
pwmG.stop()
pwmB.stop()
RPi.GPIO.cleanup()



总结

通过这次教程可以很好的掌握树莓派GPIO的控制方法,以及熟悉PYTHON的编程。而且也同时了解了RGB三基色电子LED屏幕的基本工作原理。但是在这里要提醒大家的是上面PYTHON代码对代码的缩进是要求非常严格的,所以在运行PYTHON代码时一定要注意字符和缩进是否正确。

Syndicate content