M5LED

M5LED 是一个轻量级控件,用于在用户界面中模拟发光二极管(LED)指示灯。

UiFlow2 应用示例

LED 基本用法示例

在 UiFlow2 中打开 m5cores3_m5ui_led_example.m5f2 项目。

该示例演示如何创建并控制 LED 控件,展示了如何打开/关闭 LED、改变颜色、调整亮度。

UiFlow2 代码块:

m5cores3_m5ui_led_example.png

示例输出:

无。

MicroPython 应用示例

LED 基本用法示例

该示例演示如何创建并控制 LED 控件,展示了如何打开/关闭 LED、改变颜色、调整亮度。

MicroPython 代码块:

  1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD
  2#
  3# SPDX-License-Identifier: MIT
  4
  5import os, sys, io
  6import M5
  7from M5 import *
  8import m5ui
  9import lvgl as lv
 10import m5utils
 11
 12
 13page0 = None
 14led0 = None
 15switch0 = None
 16slider0 = None
 17label0 = None
 18brightness = None
 19
 20
 21def switch0_checked_event(event_struct):
 22    global page0, led0, switch0, slider0, label0, brightness
 23    led0.set_color(0x3366FF)
 24    led0.on()
 25
 26
 27def switch0_unchecked_event(event_struct):
 28    global page0, led0, switch0, slider0, label0, brightness
 29    led0.off()
 30    led0.set_color(0x000000)
 31
 32
 33def slider0_value_changed_event(event_struct):
 34    global page0, led0, switch0, slider0, label0, brightness
 35    brightness = slider0.get_value()
 36    led0.set_brightness(int(m5utils.remap(brightness, 0, 100, 80, 255)))
 37    label0.set_text(str((str("Brightness: ") + str((str(brightness) + str("%"))))))
 38    print(led0.get_brightness())
 39
 40
 41def switch0_event_handler(event_struct):
 42    global page0, led0, switch0, slider0, label0, brightness
 43    event = event_struct.code
 44    obj = event_struct.get_target_obj()
 45    if event == lv.EVENT.VALUE_CHANGED:
 46        if obj.has_state(lv.STATE.CHECKED):
 47            switch0_checked_event(event_struct)
 48        else:
 49            switch0_unchecked_event(event_struct)
 50    return
 51
 52
 53def slider0_event_handler(event_struct):
 54    global page0, led0, switch0, slider0, label0, brightness
 55    event = event_struct.code
 56    if event == lv.EVENT.VALUE_CHANGED and True:
 57        slider0_value_changed_event(event_struct)
 58    return
 59
 60
 61def setup():
 62    global page0, led0, switch0, slider0, label0, brightness
 63    M5.begin()
 64    Widgets.setRotation(1)
 65    m5ui.init()
 66    page0 = m5ui.M5Page(bg_c=0x000000)
 67    led0 = m5ui.M5LED(x=135, y=14, size=50, color=0x00FF00, on=True, parent=page0)
 68    switch0 = m5ui.M5Switch(
 69        x=110,
 70        y=159,
 71        w=100,
 72        h=40,
 73        bg_c=0xE7E3E7,
 74        bg_c_checked=0x2196F3,
 75        circle_c=0xFFFFFF,
 76        parent=page0,
 77    )
 78    slider0 = m5ui.M5Slider(
 79        x=20,
 80        y=118,
 81        w=280,
 82        h=16,
 83        mode=lv.slider.MODE.NORMAL,
 84        min_value=0,
 85        max_value=100,
 86        value=25,
 87        bg_c=0x2193F3,
 88        color=0x2193F3,
 89        parent=page0,
 90    )
 91    label0 = m5ui.M5Label(
 92        "Brightness: 0%",
 93        x=99,
 94        y=85,
 95        text_c=0x2193F3,
 96        bg_c=0xFFFFFF,
 97        bg_opa=0,
 98        font=lv.font_montserrat_16,
 99        parent=page0,
100    )
101    switch0.add_event_cb(switch0_event_handler, lv.EVENT.ALL, None)
102    slider0.add_event_cb(slider0_event_handler, lv.EVENT.ALL, None)
103    page0.screen_load()
104    led0.off()
105    brightness = 0
106    slider0.set_value(0, True)
107    led0.align_to(page0, lv.ALIGN.TOP_MID, 0, 5)
108    label0.align_to(slider0, lv.ALIGN.CENTER, 0, -25)
109    led0.set_brightness(80)
110    print(led0.get_brightness())
111
112
113def loop():
114    global page0, led0, switch0, slider0, label0, brightness
115    M5.update()
116
117
118if __name__ == "__main__":
119    try:
120        setup()
121        while True:
122            loop()
123    except (Exception, KeyboardInterrupt) as e:
124        try:
125            m5ui.deinit()
126            from utility import print_error_msg
127
128            print_error_msg(e)
129        except ImportError:
130            print("please update to latest firmware")

示例输出:

无。

API 参考

M5LED

class m5ui.led.M5LED(*args, **kwargs)

基类:led

创建一个 LED 对象。

参数:
  • x (int) – LED 的 x 坐标。

  • y (int) – LED 的 y 坐标。

  • size (int) – LED 的大小(宽度和高度)。

  • color (int) – LED 的颜色(RGB888 格式)。

  • on (bool) – LED 的初始状态(True 表示打开,False 表示关闭)。

  • parent (lv.obj) – 要将 LED 附加到的父对象。如果未指定,LED 将附加到默认屏幕。

UiFlow2 代码块:

None

MicroPython 代码块:

from m5ui import M5Led
import lvgl as lv

m5ui.init()
led_0 = M5Led(x=50, y=50, size=50, color=0x00FF00, on=True, parent=page0)
on()

打开 LED。

返回:

None

UiFlow2 代码块:

on.png

MicroPython 代码块:

led_0.on()
off()

关闭 LED。

返回:

None

UiFlow2 代码块:

set_state.png

MicroPython 代码块:

led_0.off()
toggle()

切换 LED 的状态。

返回:

None

UiFlow2 代码块:

toggle.png

MicroPython 代码块:

led_0.toggle()
set_color(color)

设置 LED 的颜色。

参数:

color (int) – LED 的颜色(RGB888 格式)。

返回:

None

UiFlow2 代码块:

set_color.png

MicroPython 代码块:

led_0.set_color(color)
set_pos(x, y)

设置 LED 的位置。

参数:
  • x (int) – LED 的 x 坐标。

  • y (int) – LED 的 y 坐标。

返回:

None

UiFlow2 代码块:

set_pos.png

MicroPython 代码块:

led_0.set_pos(x, y)
set_x(x)

设置 LED 的 x 坐标。

参数:

x (int) – LED 的 x 坐标。

返回:

None

UiFlow2 代码块:

set_x.png

MicroPython 代码块:

led_0.set_x(x)
set_y(y)

设置 LED 的 y 坐标。

参数:

y (int) – LED 的 y 坐标。

返回:

None

UiFlow2 代码块:

set_y.png

MicroPython 代码块:

led_0.set_y(y)
get_x()

获取 LED 的 x 坐标。

返回:

LED 的 x 坐标。

返回类型:

int

UiFlow2 代码块:

get_x.png

MicroPython 代码块:

x = led_0.get_x()
get_y()

获取 LED 的 y 坐标。

返回:

LED 的 y 坐标。

返回类型:

int

UiFlow2 代码块:

get_y.png

MicroPython 代码块:

y = led_0.get_y()
set_size(width, height)

设置 LED 的大小。

参数:
  • width (int) – LED 的宽度。

  • height (int) – LED 的高度。

返回:

None

UiFlow2 代码块:

set_size.png

MicroPython 代码块:

led_0.set_size(width, height)
set_width(width)

设置 LED 的宽度。

参数:

width (int) – LED 的宽度。

返回:

None

UiFlow2 代码块:

set_width.png

MicroPython 代码块:

led_0.set_width(width)
set_height(height)

设置 LED 的高度。

参数:

height (int) – LED 的高度。

返回:

None

UiFlow2 代码块:

set_height.png

MicroPython 代码块:

led_0.set_height(height)
align_to(obj, align, x, y)

将 LED 相对于另一个对象对齐。

参数:
  • obj – 引用对象(例如 page0)。

  • align (int) – 对齐选项(参见下方 lv.ALIGN 常量)。

  • x (int) – 对齐后的 X 偏移。

  • y (int) – 对齐后的 Y 偏移。

返回:

None

UiFlow2 代码块:

align_to.png

MicroPython 代码块:

led_0.align_to(page0, lv.ALIGN.CENTER, 0, 0)
lv.ALIGN

用于定位对象的对齐选项。

  • lv.ALIGN.DEFAULT

  • lv.ALIGN.TOP_LEFT

  • lv.ALIGN.TOP_MID

  • lv.ALIGN.TOP_RIGHT

  • lv.ALIGN.BOTTOM_LEFT

  • lv.ALIGN.BOTTOM_MID:底部居中对齐。

  • msgstr “”

  • lv.ALIGN.LEFT_MID

  • lv.ALIGN.RIGHT_MID

  • lv.ALIGN.CENTER

  • lv.ALIGN.OUT_TOP_LEFT

  • lv.ALIGN.OUT_TOP_MID

  • lv.ALIGN.OUT_TOP_RIGHT

  • lv.ALIGN.OUT_BOTTOM_LEFT

  • lv.ALIGN.OUT_BOTTOM_MID(底部外侧居中对齐)

  • lv.ALIGN.OUT_BOTTOM_RIGHT

  • lv.ALIGN.OUT_LEFT_TOP

  • lv.ALIGN.OUT_LEFT_MID

  • lv.ALIGN.OUT_LEFT_BOTTOM

  • lv.ALIGN.OUT_RIGHT_TOP

  • lv.ALIGN.OUT_RIGHT_MID

  • lv.ALIGN.OUT_RIGHT_BOTTOM

set_brightness(brightness)

设置 LED 的亮度。

参数:

brightness (int) – 亮度等级 (0-100)。内部将映射到 80-255。

UiFlow2 代码块:

set_brightness.png

MicroPython 代码块:

led_0.set_brightness(50)  # Set brightness to 50%
get_brightness()

获取 LED 的亮度。

返回:

亮度级别(0-100)。

返回类型:

int

UiFlow2 代码块:

get_brightness.png

MicroPython 代码块:

brightness = led_0.get_brightness()