在科技的世界里,MicroPython和ESP32的组合为我们开启了一扇通往创意与实践的大门。今天,就让我们一起探索如何利用MicroPython和ESP32来玩转彩色灯珠,感受编程与硬件结合的魅力。
运行效果
先让我们来看看最终的运行效果,是不是非常炫酷?
电路链接
要实现上述效果,我们需要正确连接电路。下面是电路连接的示意图:
代码实现
代码 - 亮指定的颜色
以下是让彩色灯珠亮起指定颜色的代码:
from machine import Pin, PWM
import time
# 创建引脚对象
led_r = Pin(5, Pin.OUT)
led_b = Pin(18, Pin.OUT)
led_g = Pin(19, Pin.OUT)
# 创建PWM对象
pwm_led_r = PWM(led_r)
pwm_led_r.freq(1000)
# 注意,占空比如果设置为1023可以理解为全部是高电平,0表示全部是低电平,又因为对应LED引脚输出0即低电平才量,所以要用1023减去
pwm_led_r.duty(1023 - int(255 / 255 * 1023))
pwm_led_g = PWM(led_g)
pwm_led_g.freq(1000)
pwm_led_g.duty(1023 - int(206 / 255 * 1023))
pwm_led_b = PWM(led_b)
pwm_led_b.freq(1000)
pwm_led_b.duty(1023 - int(70 / 255 * 1023))
print("sleep 1...")
time.sleep(1)
在这段代码中,我们首先导入了必要的库,然后创建了引脚对象和PWM对象。通过设置PWM的占空比,我们可以控制彩色灯珠的颜色。最后,程序会暂停1秒。
代码 - 变化的颜色呼吸灯
如果想要实现颜色变化的呼吸灯效果,我们可以使用以下代码:
from machine import Pin, PWM
import time
# 创建引脚对象
led_r = Pin(5, Pin.OUT)
led_b = Pin(18, Pin.OUT)
led_g = Pin(19, Pin.OUT)
# 创建PWM对象
pwm_led_r = PWM(led_r)
pwm_led_r.freq(1000)
# 注意,占空比如果设置为1023可以理解为全部是高电平,0表示全部是低电平,又因为对应LED引脚输出0即低电平才量,所以要用1023减去
pwm_led_r.duty(1023 - int(255 / 255 * 1023))
pwm_led_g = PWM(led_g)
pwm_led_g.freq(1000)
pwm_led_g.duty(1023 - int(206 / 255 * 1023))
pwm_led_b = PWM(led_b)
pwm_led_b.freq(1000)
pwm_led_b.duty(1023 - int(70 / 255 * 1023))
print("sleep 1...")
time.sleep(1)
# ------------ 添加如下代码 ---------------
pwm_led_r.duty(1023)
pwm_led_g.duty(1023)
pwm_led_b.duty(1023)
# 创建列表,存储pwm对象
leds = [pwm_led_r, pwm_led_g, pwm_led_b]
while True:
for led_pwm_obj in leds:
for i in range(1023, -1, -1):
led_pwm_obj.duty(i)
time.sleep_ms(1)
for i in range(1024):
led_pwm_obj.duty(i)
time.sleep_ms(1)
led_pwm_obj.duty(1023)
这段代码在前面的基础上,添加了一个无限循环,通过不断改变PWM的占空比,实现了呼吸灯的效果。
学习资源
如果你想深入学习MicroPython和ESP32的相关知识,可以访问这里,里面有更详细的教程和丰富的学习资料。
通过以上的步骤,相信你已经对MicroPython和ESP32有了更深入的了解,也学会了如何使用它们来控制彩色灯珠。赶快动手实践吧,发挥你的创意,让彩色灯珠绽放出属于你的独特光芒!