#https://wokwi.com/projects/455542893257509889
from machine import Pin, PWM
import time
import random
class RGBLED:
def __init__(self, red_pin, green_pin, blue_pin):
self.red = PWM(Pin(red_pin))
self.green = PWM(Pin(green_pin))
self.blue = PWM(Pin(blue_pin))
# 设置PWM频率
for pwm in [self.red, self.green, self.blue]:
pwm.freq(1000)
# 颜色字典
self.colors = {
'red': (1023, 0, 0),
'green': (0, 1023, 0),
'blue': (0, 0, 1023),
'yellow': (1023, 1023, 0),
'cyan': (0, 1023, 1023),
'magenta': (1023, 0, 1023),
'white': (1023, 1023, 1023),
'off': (0, 0, 0)
}
def set_color(self, r, g, b):
"""设置RGB颜色(0-1023)"""
self.red.duty(r)
self.green.duty(g)
self.blue.duty(b)
def set_named_color(self, name):
"""通过名称设置颜色"""
if name in self.colors:
self.set_color(*self.colors[name])
else:
print(f"未知颜色: {name}")
def random_color_show(self, count=20, delay=0.5):
"""随机颜色秀"""
for i in range(count):
r = random.randint(0, 1023)
g = random.randint(0, 1023)
b = random.randint(0, 1023)
self.set_color(r, g, b)
print(f"颜色 {i+1}: RGB({r}, {g}, {b})")
time.sleep(delay)
# 使用示例
rgb = RGBLED(red_pin=19, green_pin=21, blue_pin=5)
print("1. 基础颜色演示")
for color_name in ['red', 'green', 'blue', 'yellow', 'cyan', 'magenta', 'white']:
print(f"显示 {color_name}")
rgb.set_named_color(color_name)
time.sleep(1)
print("2. 随机颜色秀")
rgb.random_color_show(count=15, delay=0.3)