乐趣区

RGB灯

引脚

R17 G18 B19 GND 四根线

图片

代码

import RPi.GPIO
import time

R, G, B = 17, 18, 19

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(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)

        # 调整红绿蓝 LED 的各个颜色的亮度组合出各种颜色
        for r in range(0, 101, 20):
            pwmR.ChangeDutyCycle(r)
            for g in range(0, 101, 20):
                pwmG.ChangeDutyCycle(g)
                for b in range(0, 101, 20):
                    pwmB.ChangeDutyCycle(b)
                    time.sleep(0.01)

except KeyboardInterrupt:
    pass

pwmR.stop()
pwmG.stop()
pwmB.stop()

RPi.GPIO.cleanup()

效果

退出移动版