Micropython驱动ESP32-S3上的RGB-LED灯(WS2812)
MicroPython 的 neopixel 库是一个用来控制 NeoPixel LED(基于 WS2812 或类似协议的 RGB LED)的模块。它提供了一种简单的方法来管理这些 LED 的颜色和亮度。
记录一下成功测试的代码:
import machine import neopixel import time # 配置 RGB LED PIN = 48 # GPIO38 NUM_LEDS = 8 # LED 灯珠的数量,根据实际情况调整 LED_COUNT = 8 # 初始化 Neopixel np = neopixel.NeoPixel(machine.Pin(PIN), NUM_LEDS) def set_color(index, r, g, b, brightness=1.0): """ 设置指定 LED 的颜色 :param index: LED 的索引(从 0 开始) :param r: 红色值(0-255) :param g: 绿色值(0-255) :param b: 蓝色值(0-255) :param brightness: 亮度调整系数(0.0-1.0) """ r = int(r * brightness) g = int(g * brightness) b = int(b * brightness) np[index] = (g, r, b) # Neopixel 是 GRB 排序 np.write() # 将数据写入 LED def rainbow_cycle(delay_ms=50): """ 循环显示彩虹效果 :param delay_ms: 每次循环的延迟时间(毫秒) """ for j in range(256): # 循环 256 次 for i in range(NUM_LEDS): # 每个 LED 单独计算颜色 pixel_index = (i * 256 // NUM_LEDS) + j np[i] = wheel(pixel_index & 255) np.write() machine.sleep(delay_ms) def wheel(pos): """ 生成彩虹颜色 :param pos: 位置(0-255) :return: (g, r, b) 格式的颜色元组 """ if pos < 85: return (pos * 3, 255 - pos * 3, 0) elif pos < 170: pos -= 85 return (255 - pos * 3, 0, pos * 3) else: pos -= 170 return (0, pos * 3, 255 - pos * 3) def set_all_red(): """ 将所有 LED 设置为红色。 """ for i in range(LED_COUNT): np[i] = (255, 0, 0) # 红色 (R, G, B) np.write() # 更新 LED 显示 def set_all_white(): """ 将所有 LED 设置为白色。 """ for i in range(LED_COUNT): np[i] = (255, 255, 255) # 白色 (R, G, B) np.write() # 更新 LED 显示 def turn_off_all_leds(): """ 关闭所有 LED。 """ for i in range(LED_COUNT): np[i] = (0, 0, 0) # 设置每颗 LED 的 RGB 值为 (0, 0, 0) np.write() # 更新 LED 显示 # 测试代码 #set_color(0, 255, 0, 0) # 第一个 LED 显示红色 #time.sleep(2) #set_color(1, 0, 255, 0) # 第二个 LED 显示绿色 #time.sleep(2) #set_color(2, 0, 0, 255) # 第三个 LED 显示蓝色 #time.sleep(2) set_all_red() time.sleep(2) set_all_white() time.sleep(2) turn_off_all_leds() #rainbow_cycle() # 显示彩虹效果
从什么编程语言开始学习
在开始学习一门编程语言之前,我们来参考下程序员社区流行的一张编程语言选择地图。需要注意的是,一个优秀的程序员必须至少了解几种编程语言,以便用不同语言来解决不同问题。随着技术的进步,优秀的人们也在不断学习和成长。这张图只是编程之旅的开始,只需选择一种语言,现在就开始探索吧!
从这张图我们可以看到,Python具有广泛的应用场景:从自我提升到找工作和鸡娃学习,从Web开发到人工智能和自动化运维等领域,Python都发挥着重要的作用。由于其简单易学、代码可读性高、拥有丰富的库和框架等优点,Python将继续在未来的科技领域中发挥重要的作用。
在美国电气和电子工程师协会(IEEE Spectrum)的第10届年度编程语言排行榜中(如下图),Python不仅在的普通“Spectrum”排名(加权以反映典型IEEE成员的兴趣)中继续保持第一,而且还扩大了其领先优势。它已成为多面手语言,甚至垄断了一些专业领域,例如人工智能;其强大而广泛的库使其无处不在。尽管摩尔定律对于高端计算正在逐渐减少,但低端微控制器仍然从性能提升中受益,这意味着现在廉价的物联网CPU(如ESP32)上就有足够的计算能力让Python成为嵌入式开发的有力竞争者。并且Python似乎也在巩固其长期地位:现在许多儿童和青少年使用Python编写他们的第一个游戏或点亮闪烁他们的第一个LED。然后他们可以无缝地进入更先进的领域,甚至用同一种语言找到工作——这就是Python语言的生态优势。
波士顿动力(Boston Dynamics)Atlas人形机器人近况
昨天(2023年1月19日),波士顿动力(Boston Dynamics)名为Atlas的人形机器人最近展示了与目标物体互动,更改现实环境,抓举、抛起重物等功能;见视频。
机电工程师网3.0上线
在2023年这个寒假,刚好有时间把机电工程师网站做一个改版,作为一个新的起点。
- 1.0时期网站后台为dedecms.
- 2.0时期网站为mediawiki。
- 3.0版本更新为dokuwiki系统。
网站将继续更新科技相关学习资料与新闻。