在Python中控制三色灯通常需要使用PWM(脉冲宽度调制)技术,因为RGB灯由红、绿、蓝三种颜色的LED组成,每种颜色的LED需要独立控制亮度。以下是使用Raspberry Pi和GPIO库控制三色灯的基本步骤和示例代码:
设置GPIO引脚
使用Raspberry Pi的GPIO库设置相应的引脚为输出模式。
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM) 设置引脚编号模式为BCM
R, 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) 设置频率为50Hz
pwmG = 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 GPIO
import time
设置引脚和PWM
GPIO.setmode(GPIO.BCM)
R, G, B = 18, 15, 14
GPIO.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)
启动PWM
pwmR.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:
关闭PWM
pwmR.stop()
pwmG.stop()
pwmB.stop()
GPIO.cleanup() 清理GPIO设置
以上代码展示了如何使用Raspberry Pi的GPIO库和PWM来控制三色LED的亮度和颜色。您可以根据需要调整占空比和颜色组合来创建不同的灯光效果。