树莓派GPIO控制LED彩灯

树莓派使用GPIO接口来控制LED灯,自制五彩炫光的节日彩灯。

 

1.硬件准备

a. 树莓派(Raspberry Pi)一个

b. 彩色RGB二极管

c. 杜邦线

d. 5V电源引脚

以上所有零件均可在某宝上 买到,都很便宜。

 

 LED灯上的4根引脚分别是VCC,R,G,B。 VCC需要接到电源正极。我们把它连到树莓派的5V引脚上。 R,G,B分别是红绿蓝灯的负极接口。我们把它们连接到树莓派的GPIO口上。 然后跟前一篇一样,使用PWM来控制3个小灯的明暗程度即可混合出各种不同颜色的光。

 

2.组装图

 

接线图

 

按照例图接好线 组装完成以后,下面就可以开始编写控制的Python代码。

 

3.编写代码

#/home/pi/LEDight.py
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)

pwmR = RPi.GPIO.PWM(R, 70)
pwmG = RPi.GPIO.PWM(G, 70)
pwmB = RPi.GPIO.PWM(B, 70)

pwmR.start(0)
pwmG.start(0)
pwmB.start(0)

try:
   t = 0.4
   while True:
        # 红色灯全亮,蓝灯,绿灯全暗(红色)
        pwmR.ChangeDutyCycle(0)
        pwmG.ChangeDutyCycle(100)
        pwmB.ChangeDutyCycle(100)
           time.sleep(t)
           
           # 绿色灯全亮,红灯,蓝灯全暗(绿色)
           pwmR.ChangeDutyCycle(100)
           pwmG.ChangeDutyCycle(0)
           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)
           
           # 红灯,绿灯,蓝灯全亮(白色)
           pwmR.ChangeDutyCycle(0)
           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()

 

写完代码后 把文件放在 /home/pi 目录下 然后在终端执行命令 python /home/pi/LEDight.py  即可看到效果。

 

特别注意接线方式,以及复制代码的时候 确保代码缩进正确,输出引脚 红绿蓝 线 千万别接错了。

 

效果图

 

 

 

 

关注一下,

👇👇👇

 

posted @ 2019-02-21 14:31  WireHome  阅读(1716)  评论(0编辑  收藏  举报