第一步:接引脚
树莓派 | RGB灯 |
---|---|
GPIO12 | R |
GPIO16 | G |
GPIO18 | B |
GND | GND |
第二步:讲解
一:初始化
import RPi.GPIO as GPIO
import time
colorr = 12
colorg = 16
colorb = 18
vartime = 2.5
GPIO.setmode(GPIO.BOARD)#采用实际的物理引脚进行编码
GPIO.setwarnings(False)#无视警告
将编码方式设为物理引脚,后面的无视警告可以使程序运行得毫无阻碍。
二:格式化引脚
pinlist = {'r':colorr,'g':colorg,'b':colorb}
for i in pinlist:
GPIO.setup(pinlist[i],GPIO.OUT)
for j in pinlist:
GPIO.output(pinlist[j],GPIO.LOW)
这里用了一个字典,并用for循环遍历字典,这样可以简化代码。
三:开启特效
while True:
for b in pinlist:
GPIO.output(pinlist[b],GPIO.HIGH)
time.sleep(vartime)
GPIO.output(pinlist[b],GPIO.LOW)
vartime = vartime*0.95
if vartime<=0.001:
break
这里是红绿蓝红绿蓝的跑马灯样式
这里的GPIO.output(pinlist[b],GPIO.HIGH)是让小灯亮起来。
time.sleep(vartime)让它停一下再闪烁。
然后GPIO.output(pinlist[b],GPIO.LOW)让它熄灭。
vartime = vartime*0.95让时间不断缩短。
换一种颜色再次循环。
if vartime<=0.001:
break
以上的代码如果检测到时间小于0.001秒,就会退出while循环,终止程序。
退出后GPIO.cleanup()清空引脚。
第三步:最终代码
import RPi.GPIO as GPIO
import time
colorr = 12
colorg = 16
colorb = 18
vartime = 2.5
GPIO.setmode(GPIO.BOARD)#采用实际的物理引脚进行编码
GPIO.setwarnings(False)#无视警告
pinlist = {'r':colorr,'g':colorg,'b':colorb}
for i in pinlist:
GPIO.setup(pinlist[i],GPIO.OUT)
for j in pinlist:
GPIO.output(pinlist[j],GPIO.LOW)
while True:
for b in pinlist:
GPIO.output(pinlist[b],GPIO.HIGH)
time.sleep(vartime)
GPIO.output(pinlist[b],GPIO.LOW)
vartime = vartime*0.95
if vartime<=0.001:
break
GPIO.cleanup()