Chain Angle

AngleChain 是用于 Chain 总线上角度传感器设备的辅助类。它提供了以不同分辨率(12 位和 8 位 ADC)读取角度值以及配置顺时针旋转方向的方法。

支持以下产品:

Chain Angle

UiFlow2 示例

角度读取与 RGB 亮度控制

在 UiFlow2 中打开 m5core_chain_angle_basic_example.m5f2 项目。

此示例演示如何从 Chain 角度传感器读取角度值,并根据角度值控制 RGB 亮度。该示例读取 8 位 ADC 值(0-255)并将其映射到亮度值(0-100)以提供视觉反馈。

UiFlow2 代码块:

m5core_chain_angle_basic_example.png

示例输出:

MicroPython 示例

角度读取与 RGB 亮度控制

此示例演示如何从 Chain 角度传感器读取角度值,并根据角度值控制 RGB 亮度。该示例读取 8 位 ADC 值(0-255)并将其映射到亮度值(0-100)以提供视觉反馈。

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 chain import ChainBus
 9from chain import AngleChain
10import time
11import m5utils
12
13
14title0 = None
15label_brightness = None
16label_val = None
17bus2 = None
18chain_angle_0 = None
19last_time = None
20value = None
21brightness = None
22
23
24def setup():
25    global title0, label_brightness, label_val, bus2, chain_angle_0, last_time, value, brightness
26    M5.begin()
27    Widgets.setRotation(1)
28    Widgets.fillScreen(0x222222)
29    title0 = Widgets.Title("Chain Angle Example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu24)
30    label_brightness = Widgets.Label(
31        "Brightness: ", 5, 117, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24
32    )
33    label_val = Widgets.Label("Value:", 5, 69, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24)
34    bus2 = ChainBus(2, tx=21, rx=22)
35    chain_angle_0 = AngleChain(bus2, 1)
36    chain_angle_0.set_rgb_color(0x00CCCC)
37
38
39def loop():
40    global title0, label_brightness, label_val, bus2, chain_angle_0, last_time, value, brightness
41    M5.update()
42    if (time.ticks_diff((time.ticks_ms()), last_time)) >= 100:
43        last_time = time.ticks_ms()
44        value = chain_angle_0.get_adc8()
45        brightness = int(m5utils.remap(value, 0, 255, 0, 100))
46        label_val.setText(str((str("Value: ") + str(value))))
47        label_brightness.setText(str((str("Brightness: ") + str(brightness))))
48        chain_angle_0.set_rgb_brightness(brightness, save=False)
49
50
51if __name__ == "__main__":
52    try:
53        setup()
54        while True:
55            loop()
56    except (Exception, KeyboardInterrupt) as e:
57        try:
58            bus2.deinit()
59            from utility import print_error_msg
60
61            print_error_msg(e)
62        except ImportError:
63            print("please update to latest firmware")

示例输出:

API

AngleChain

class chain.angle.AngleChain(bus, device_id)

基类:KeyChain

用于通过 Chain 总线与角度设备交互的 Angle Chain 类。

参数:
  • bus (ChainBus) – Chain 总线实例。

  • device_id (int) – Chain 总线上角度传感器的设备 ID。

UiFlow2 代码块:

init.png

MicroPython 代码块:

from chain import ChainBus
from chain import AngleChain

chainbus_0 = ChainBus(2, 32, 33, verbose=True)
angle_0 = AngleChain(chainbus_0, 1)

有关其他按钮和一些通用方法,请参考 ChainKey 类。

get_adc12()

获取 12 位 ADC 分辨率的角度值。

返回:

12 位 ADC 角度值(0-4095),失败时返回 None。

返回类型:

int

UiFlow2 代码块:

get_adc12.png

MicroPython 代码块:

angle = angle_0.get_adc12()
get_adc8()

获取 8 位 ADC 分辨率的角度值。

返回:

8 位 ADC 角度值(0-255),失败时返回 None。

返回类型:

int

UiFlow2 代码块:

get_adc8.png

MicroPython 代码块:

angle = angle_0.get_adc8()
set_cw_increase(increase=True, save=False)

设置顺时针旋转是否增加角度值。

参数:
  • increase (bool) – 顺时针旋转是否增加。False 表示顺时针减少,True 表示顺时针增加。

  • save (bool) – 是否保存到 Flash。False 表示不保存,True 表示保存。

返回:

设置成功返回 True,否则返回 False。

返回类型:

bool

UiFlow2 代码块:

set_cw_increase.png

MicroPython 代码块:

success = angle_0.set_cw_increase(True, False)
get_cw_increase()

获取顺时针旋转是否增加角度值。

返回:

顺时针旋转是否增加。False 表示顺时针减少,True 表示顺时针增加。失败时返回 False。

返回类型:

bool

UiFlow2 代码块:

get_cw_increase.png

MicroPython 代码块:

increase = angle_0.get_cw_increase()