树莓派GPIO控制LED彩灯

作者: WireHome | 来源:发表于2019-02-21 14:26 被阅读15次

    树莓派使用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.组装图

    image

    接线图

    image

    按照例图接好线 组装完成以后,下面就可以开始编写控制的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 即可看到效果。

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

    效果图

    image

    关注一下,更多精彩,不容错过!

    👇👇👇

    image

    相关文章

      网友评论

        本文标题:树莓派GPIO控制LED彩灯

        本文链接:https://www.haomeiwen.com/subject/evvryqtx.html