入门MicroPython+ESP32:彩色灯珠的奇妙之旅

在科技的世界里,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有了更深入的了解,也学会了如何使用它们来控制彩色灯珠。赶快动手实践吧,发挥你的创意,让彩色灯珠绽放出属于你的独特光芒!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值