zoukankan      html  css  js  c++  java
  • 树莓派GPIO控制RGB彩色LED灯

    树莓派GPIO通过PWM来控制RGB彩色LED灯,可以显示任何我们想要的颜色。

    RGB模块简介

    这个RGB彩色LED里其实有3个灯,分别是红灯、绿灯和蓝灯。控制这三个灯分别发出不同强度的光,混合起来就能发出各种颜色的光了。 LED灯上的4根引脚分别是GND,R,G,B。 GND需要接地。我们把它连到树莓派的电源地上。 R,G,B分别是红绿蓝灯的正极接口。我们把它们连接到树莓派的GPIO口上。

    RGB彩色LED灯模块.jpgRGB彩色LED灯模块.jpg

    硬件连接

    R接到树莓派GPIO18

    G连接树莓派GPIO15

    B连接树莓派GPIO14

    其中GPIO编号方式为BCM编号方式,具体请看

    电路连接原理图如下:

    树莓派连接RGB彩色LED灯原理图树莓派连接RGB彩色LED灯原理图

    程序代码

    新建RGB_LED.py文件,输入以下代码:

     
    #!/usr/bin/env python
    # encoding: utf-8
     
    import RPi.GPIO
    import time
     
    R,G,B=18,15,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, 50)
    pwmG = RPi.GPIO.PWM(G, 50)
    pwmB = RPi.GPIO.PWM(B, 50)
     
    pwmR.start(0)
    pwmG.start(0)
    pwmB.start(0)
     
    try:
     
        t = 1
        while True:
            # 红色灯全亮,蓝灯,绿灯全暗(红色)
            pwmR.ChangeDutyCycle(100)
            pwmG.ChangeDutyCycle(0)
            pwmB.ChangeDutyCycle(0)
            time.sleep(t)
             
            # 绿色灯全亮,红灯,蓝灯全暗(绿色)
            pwmR.ChangeDutyCycle(0)
            pwmG.ChangeDutyCycle(100)
            pwmB.ChangeDutyCycle(0)
            time.sleep(t)
             
            # 蓝色灯全亮,红灯,绿灯全暗(蓝色)
            pwmR.ChangeDutyCycle(0)
            pwmG.ChangeDutyCycle(0)
            pwmB.ChangeDutyCycle(100)
            time.sleep(t)
             
            # 红灯,绿灯全亮,蓝灯全暗(黄色)
            pwmR.ChangeDutyCycle(100)
            pwmG.ChangeDutyCycle(100)
            pwmB.ChangeDutyCycle(0)
            time.sleep(t)
             
            # 红灯,蓝灯全亮,绿灯全暗(洋红色)
            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(100)
            time.sleep(t)
     
    except KeyboardInterrupt:
        pass
     
    pwmR.stop()
    pwmG.stop()
    pwmB.stop()
     
    RPi.GPIO.cleanup()
    
    Python

    然后,运行这个py脚本,就可以看到RGBLED灯在7种颜色间切换。

    原创文章,转载请注明: 转载自科技爱好者博客

  • 相关阅读:
    指针加减法运算的“定义域”
    将main()进行到底
    带命令行参数的main函数的误解[到处转载的垃圾]
    亡羊补牢还是越错越远——“C99允许在函数中的复合语句中定义变量”
    会错意表错情,搭错车上错床——“度日如年”的故事及“feof()”的故事
    狗屁不通的《C语言详解:什么是表达式、语句、表达式语句?》
    已知两边长求三角形面积
    用驴子拖宝马——怎样滥用结构体
    糟蹋好题——魔方阵问题
    怎样建立链表并同时造成内存泄露
  • 原文地址:https://www.cnblogs.com/littlehb/p/8599014.html
Copyright © 2011-2022 走看看