Angle8 Unit
UNIT 8Angle 是一款输入单元,集成 8 个可调电位器,内部采用 STM32F030 单片机作为采集与通信处理器;与主控通过 I2C 通信接口连接。每个可调电位器对应 1 颗 RGB LED 灯,同时还包含 1 个物理拨动开关及其对应的 RGB LED 灯,并内置 5V -> 3V3 的 DCDC 电路。
支持以下产品:
MicroPython 应用示例
1# SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from hardware import * 9from unit import Angle8Unit 10import m5utils 11import time 12 13 14title0 = None 15label0 = None 16label1 = None 17label2 = None 18i2c0 = None 19angle8_0 = None 20 21 22import math 23 24map_value = None 25 26 27def setup(): 28 global title0, label0, label1, label2, i2c0, angle8_0, map_value 29 30 M5.begin() 31 Widgets.fillScreen(0x222222) 32 title0 = Widgets.Title( 33 "8AngleUnit CoreS3 Example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18 34 ) 35 label0 = Widgets.Label("label0", 0, 58, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 36 label1 = Widgets.Label("label1", 0, 109, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 37 label2 = Widgets.Label("label2", 0, 160, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 38 39 i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000) 40 angle8_0 = Angle8Unit(i2c0, 0x43) 41 angle8_0.set_led_rgb_from(1, 9, 0x33FF33, 100, 0) 42 map_value = 0 43 44 45def loop(): 46 global title0, label0, label1, label2, i2c0, angle8_0, map_value 47 M5.update() 48 map_value = round(m5utils.remap(angle8_0.get_adc8_raw(8), 0, 255, 0, 100)) 49 label0.setText(str((str("Switch:") + str((angle8_0.get_switch_status()))))) 50 label1.setText(str((str("CH1 8bit:") + str((angle8_0.get_adc8_raw(1)))))) 51 label2.setText(str((str("CH8 map value:") + str(map_value)))) 52 angle8_0.set_led_rgb_from(1, 9, 0x33FF33, map_value, 0) 53 time.sleep(1) 54 55 56if __name__ == "__main__": 57 try: 58 setup() 59 while True: 60 loop() 61 except (Exception, KeyboardInterrupt) as e: 62 try: 63 from utility import print_error_msg 64 65 print_error_msg(e) 66 except ImportError: 67 print("please update to latest firmware")
UiFlow2 应用示例
angle8unit_cores3_example.m5f2
class Angle8Unit
Constructors
Methods
- Angle8Unit.available()
检查设备是否在 I2C 总线上可用。
- Angle8Unit.get_adc12_raw(channel)
从指定通道获取原始 12-bit ADC 值。
- 参数:
channel (int) – 通道编号(1 到 8)。
UIFLOW2:

- Angle8Unit.get_switch_status()
获取开关按钮的状态。
UIFLOW2:

- Angle8Unit.set_led_rgb(channel, rgb, bright)
设置指定 LED 通道的 RGB 颜色和亮度。
- 参数:
UIFLOW2:

- Angle8Unit.set_led_rgb_from(begin, end, rgb, bright, per_delay)
设置一段 LED 通道范围内的 RGB 颜色和亮度。
- 参数:
UIFLOW2:

- Angle8Unit.set_angle_sync_bright(channel, rgb)
将 LED 亮度与角度值同步设置。
UIFLOW2:

- Angle8Unit.get_device_spec(mode)
获取设备规格信息,例如固件版本或 I2C 地址。
- 参数:
mode (int) – 要读取的寄存器(FW_VER_REG 或 I2C_ADDR_REG)。
UIFLOW2:

- Angle8Unit.set_i2c_address(address)
为设备设置一个新的 I2C 地址。
- 参数:
address (int) – 新的 I2C 地址(1 到 127)。
UIFLOW2:

- Angle8Unit.readfrommem(reg, num)
从设备寄存器读取指定数量的字节。
- 参数:
reg – 要读取的寄存器地址。
num – 要读取的字节数。



