Step16 Unit

这个库是 Unit Step16 的驱动。

支持以下产品:

Unit step16

UiFlow2 Example

读编码器

在 UiFlow2 上打开 cores3_step16_unit_example.m5f2 项目。

示例展示了如何读取并显示编码器读数。

UiFlow2 代码块:

cores3_step16_unit_example.png

示例输出:

MicroPython 应用示例

读编码器

示例展示了如何读取并显示编码器读数。

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 *
 8from hardware import I2C
 9from hardware import Pin
10from unit import Step16Unit
11
12
13title0 = None
14label1 = None
15label_val = None
16i2c0 = None
17step16_0 = None
18val = None
19
20
21def setup():
22    global title0, label1, label_val, i2c0, step16_0, val
23    M5.begin()
24    Widgets.setRotation(1)
25    Widgets.fillScreen(0x222222)
26    title0 = Widgets.Title("UnitStep16 Example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu24)
27    label1 = Widgets.Label(
28        "Encoder Value:", 10, 55, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24
29    )
30    label_val = Widgets.Label("0", 205, 55, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24)
31
32    i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000)
33    step16_0 = Step16Unit(i2c0, 0x48)
34    print((str("i2c addr: ") + str((step16_0.get_addr()))))
35    print((str("version: ") + str((step16_0.get_firmware_version()))))
36    step16_0.set_led_mode(Step16Unit.AUTO_OFF, 5)
37    step16_0.set_led_brightness(80)
38    print((str("rgb brightness: ") + str((step16_0.get_rgb_brightness()))))
39    print((str("rgb value: ") + str((step16_0.get_rgb_value()))))
40    if step16_0.get_rgb_power():
41        print("RGB power on")
42    else:
43        print("RG B power off")
44    step16_0.set_rgb_power(True)
45    step16_0.set_rgb_value(0x3333FF)
46
47
48def loop():
49    global title0, label1, label_val, i2c0, step16_0, val
50    M5.update()
51    val = step16_0.get_encoder_value()
52    label_val.setText(str(val))
53
54
55if __name__ == "__main__":
56    try:
57        setup()
58        while True:
59            loop()
60    except (Exception, KeyboardInterrupt) as e:
61        try:
62            from utility import print_error_msg
63
64            print_error_msg(e)
65        except ImportError:
66            print("please update to latest firmware")

示例输出:

API应用

Step16Unit

class unit.step16.Step16Unit(i2c, addr=72)

基类:object

创建一个 Step16Unit 对象。

参数:
  • i2c (I2C) – I2C 端口

  • addr (int | list | tuple) – Step16Unit 从机地址

  • addr

UiFlow2 代码块:

init.png

MicroPython 代码块:

from unit import Step16Unit

unit_step16_0 = Step16Unit(i2c0, 0x48)
get_encoder_value()

获取当前编码器数值(0~15)。

返回:

编码器数值。

返回类型:

int

UiFlow2 代码块:

get_encoder_value.png

MicroPython 代码块:

value = unit_step16_0.get_encoder_value()
set_encoder_cw_increase(enable)

配置顺时针旋转是否增加编码器数值。

参数:

enable (bool) –

  • True: Clockwise rotation increases the encoder value.

  • True:顺时针旋转增加编码器数值。

返回类型:

None

UiFlow2 代码块:

set_encoder_cw_increase.png

MicroPython 代码块:

unit_step16_0.set_encoder_cw_increase(True)
unit_step16_0.set_encoder_cw_increase(False)
get_encoder_cw_increase()

获取当前编码器方向。

返回:

1 为顺时针增加,0 为顺时针减少。

返回类型:

int

UiFlow2 代码块:

get_encoder_cw_increase.png

MicroPython 代码块:

direction = unit_step16_0.get_encoder_cw_increase()
set_led_mode(mode, seconds=5)

设置 LED 显示模式。

参数:
  • mode (int) – LED 模式类型。0 = 常灭,1 = 常亮,2 = 自动关闭模式,超时时间为 seconds 秒。

  • seconds (int) – 当 mode 为 2(自动关闭)时的超时时间,单位为秒。

返回类型:

None

UiFlow2 代码块:

set_led_mode.png

MicroPython 代码块:

unit_step16_0.set_led_mode(0)         # Always off
unit_step16_0.set_led_mode(1)         # Always on
unit_step16_0.set_led_mode(2, 10)     # Auto-off after 10 seconds
get_led_mode()

Get LED display mode.

The LED mode values:

  • 0x00 : 常灭.

  • 0xFE : 常亮.

  • 0x00 ~ 0xFD :自动关闭模式,值为自动关闭的时间(秒)。

返回:

LED display mode.

返回类型:

int

UiFlow2 代码块:

get_led_mode.png

MicroPython 代码块:

unit_step16_0.get_led_mode()
set_led_brightness(brightness)

设置 LED 亮度 (0~100)。

参数:
  • int (brightness) – 亮度等级。

  • brightness (int)

返回类型:

None

UiFlow2 代码块:

set_led_brightness.png

MicroPython 代码块:

unit_step16_0.set_led_brightness(80)
get_led_brightness()

获取当前 LED 亮度。

返回:

亮度等级。

返回类型:

int

UiFlow2 代码块:

get_led_brightness.png

MicroPython 代码块:

brightness = unit_step16_0.get_led_brightness()
print("Brightness:", brightness)
set_rgb_power(enable)

打开或关闭 RGB 灯。

参数:

enable (bool) – True 为打开 RGB 灯,False 为关闭 RGB 灯。

返回类型:

None

UiFlow2 代码块:

set_rgb_power.png

MicroPython 代码块:

unit_step16_0.set_rgb_power(True)   # Turn ON RGB light
unit_step16_0.set_rgb_power(False)  # Turn OFF RGB light
get_rgb_power()

获取当前 RGB 灯电源状态。

返回:

如果 RGB 灯已开启,则为 True;如果关闭,则为 False。

返回类型:

bool

UiFlow2 代码块:

get_rgb_power.png

MicroPython 代码块:

power_on = unit_step16_0.get_rgb_power()
set_rgb_brightness(brightness)

设置 RGB 灯亮度 (0~100)%。

参数:

brightness (int) – 亮度百分比(0~100)。

返回类型:

None

UiFlow2 代码块:

set_rgb_brightness.png

MicroPython 代码块:

unit_step16_0.set_rgb_brightness(80)  # Set RGB brightness to 80%
get_rgb_brightness()

获取当前 RGB 亮度等级(0~100%)。

返回:

Current RGB brightness percentage (0~100).

返回类型:

int

UiFlow2 代码块:

get_rgb_brightness.png

MicroPython 代码块:

brightness = unit_step16_0.get_rgb_brightness()
print("RGB Brightness:", brightness)
set_rgb_value(color=0)

设置 RGB LED 颜色使用 24 位整数。

参数:

color (int) – 使用一个 24 位整数表示 RGB 颜色(例如 0xFF8040,表示红色 255,绿色 128,蓝色 64)。格式为 (R << 16) | (G << 8) | B。

返回类型:

None

UiFlow2 代码块:

set_rgb_value.png

MicroPython 代码块:

unit_step16_0.set_rgb_value()
get_rgb_value()

获取当前 RGB 灯颜色。

返回:

Tuple of (r, g, b)

返回类型:

tuple

UiFlow2 代码块:

get_rgb_value.png

MicroPython 代码块:

r, g, b = unit_step16_0.get_rgb_value()
save_led_config()

保存当前的 LED 模式和亮度设置。

UiFlow2 代码块:

save_led_config.png

MicroPython 代码块:

unit_step16_0.save_led_config()
返回类型:

None

save_rgb_config()

保存当前的 RGB 灯颜色设置。

UiFlow2 代码块:

save_rgb_config.png

MicroPython 代码块:

unit_step16_0.save_rgb_config()
返回类型:

None

set_addr(new_addr)

设置 I2C 设备地址。

参数:

new_addr (int) – 新 I2C 地址(0x08~0x77)。

返回类型:

None

UiFlow2 代码块:

set_addr.png

MicroPython 代码块:

unit_step16_0.set_addr(0x49)
get_addr()

获取当前设备地址。

返回:

I2C 地址

返回类型:

int

UiFlow2 代码块:

get_addr.png

MicroPython 代码块:

addr = unit_step16_0.get_addr()
get_firmware_version()

获取固件版本。

返回:

固件版本。

返回类型:

int

UiFlow2 代码块:

get_firmware_version.png

MicroPython 代码块:

addr = unit_step16_0.get_firmware_version()