在Python中控制三色灯通常需要使用PWM(脉冲宽度调制)技术,因为RGB灯由红、绿、蓝三种颜色的LED组成,每种颜色的LED需要独立控制亮度。以下是使用Raspberry Pi和GPIO库控制三色灯的基本步骤和示例代码:
设置GPIO引脚
使用Raspberry Pi的GPIO库设置相应的引脚为输出模式。
import RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM) 设置引脚编号模式为BCMR, G, B = 18, 15, 14 定义红、绿、蓝LED的GPIO引脚GPIO.setup(R, GPIO.OUT)GPIO.setup(G, GPIO.OUT)GPIO.setup(B, GPIO.OUT)
创建PWM对象
为每个LED创建一个PWM对象,设置频率和占空比。
pwmR = GPIO.PWM(R, 50) 设置频率为50HzpwmG = GPIO.PWM(G, 50)pwmB = GPIO.PWM(B, 50)
启动PWM
启动PWM,设置初始占空比为0。
pwmR.start(0)pwmG.start(0)pwmB.start(0)
控制颜色
通过改变PWM的占空比来控制LED的亮度,从而改变颜色。例如,全亮为占空比100%,全暗为0%。
红色全亮pwmR.ChangeDutyCycle(100)绿色全亮pwmG.ChangeDutyCycle(100)蓝色全亮pwmB.ChangeDutyCycle(100)time.sleep(1) 持续1秒绿色全亮pwmR.ChangeDutyCycle(0)红色全亮pwmG.ChangeDutyCycle(100)蓝色全亮pwmB.ChangeDutyCycle(0)time.sleep(1) 持续1秒
关闭PWM
在程序结束时关闭PWM,释放资源。

pwmR.stop()pwmG.stop()pwmB.stop()
完整示例
将以上步骤整合到一个完整的示例中。
import RPi.GPIO as GPIOimport time设置引脚和PWMGPIO.setmode(GPIO.BCM)R, G, B = 18, 15, 14GPIO.setup(R, GPIO.OUT)GPIO.setup(G, GPIO.OUT)GPIO.setup(B, GPIO.OUT)创建PWM对象pwmR = GPIO.PWM(R, 50)pwmG = GPIO.PWM(G, 50)pwmB = GPIO.PWM(B, 50)启动PWMpwmR.start(0)pwmG.start(0)pwmB.start(0)try:while True:红色全亮pwmR.ChangeDutyCycle(100)pwmG.ChangeDutyCycle(0)pwmB.ChangeDutyCycle(0)time.sleep(1)绿色全亮pwmR.ChangeDutyCycle(0)pwmG.ChangeDutyCycle(100)pwmB.ChangeDutyCycle(0)time.sleep(1)蓝色全亮pwmR.ChangeDutyCycle(0)pwmG.ChangeDutyCycle(0)pwmB.ChangeDutyCycle(100)time.sleep(1)finally:关闭PWMpwmR.stop()pwmG.stop()pwmB.stop()GPIO.cleanup() 清理GPIO设置
以上代码展示了如何使用Raspberry Pi的GPIO库和PWM来控制三色LED的亮度和颜色。您可以根据需要调整占空比和颜色组合来创建不同的灯光效果。
