Chain Angle
AngleChain 是用于 Chain 总线上角度传感器设备的辅助类。它提供了以不同分辨率(12 位和 8 位 ADC)读取角度值以及配置顺时针旋转方向的方法。
支持以下产品:
UiFlow2 示例
角度读取与 RGB 亮度控制
在 UiFlow2 中打开 m5core_chain_angle_basic_example.m5f2 项目。
此示例演示如何从 Chain 角度传感器读取角度值,并根据角度值控制 RGB 亮度。该示例读取 8 位 ADC 值(0-255)并将其映射到亮度值(0-100)以提供视觉反馈。
UiFlow2 代码块:
示例输出:
无
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 类。
UiFlow2 代码块:

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。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
angle = angle_0.get_adc12()
- get_adc8()
获取 8 位 ADC 分辨率的角度值。
- 返回:
8 位 ADC 角度值(0-255),失败时返回 None。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
angle = angle_0.get_adc8()
- set_cw_increase(increase=True, save=False)
设置顺时针旋转是否增加角度值。
- 参数:
- 返回:
设置成功返回 True,否则返回 False。
- 返回类型:
UiFlow2 代码块:

MicroPython 代码块:
success = angle_0.set_cw_increase(True, False)


