Angle8 Unit

UNIT 8Angle 是一款输入单元,集成 8 个可调电位器,内部采用 STM32F030 单片机作为采集与通信处理器;与主控通过 I2C 通信接口连接。每个可调电位器对应 1 颗 RGB LED 灯,同时还包含 1 个物理拨动开关及其对应的 RGB LED 灯,并内置 5V -> 3V3 的 DCDC 电路。

支持以下产品:

Angle8Unit

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 应用示例

example.png

angle8unit_cores3_example.m5f2

class Angle8Unit

Constructors

class Angle8Unit(i2c, address)

使用指定的 I2C 接口和地址初始化 Angle8Unit。

参数:
  • i2c – 用于通信的 I2C 或 PAHUBUnit 实例。

  • address (int) – 设备的 I2C 地址(默认为 ANGLE8_ADDR)。

UIFLOW2:

init.png

Methods

Angle8Unit.available()

检查设备是否在 I2C 总线上可用。

Angle8Unit.get_adc12_raw(channel)

从指定通道获取原始 12-bit ADC 值。

参数:

channel (int) – 通道编号(1 到 8)。

UIFLOW2:

get_adc12_raw.png

Angle8Unit.get_adc8_raw(channel)

从指定通道获取原始 8 位 ADC 值。

参数:

channel (int) – 通道编号(1 到 8)。

UIFLOW2:

get_adc8_raw.png

Angle8Unit.get_switch_status()

获取开关按钮的状态。

UIFLOW2:

get_switch_status.png

Angle8Unit.set_led_rgb(channel, rgb, bright)

设置指定 LED 通道的 RGB 颜色和亮度。

参数:
  • channel (int) – LED 通道编号(0 到 8)。

  • rgb (int) – RGB 颜色值(0x00 到 0xFFFFFF)。

  • bright (int) – 亮度等级(0 到 100,默认值为 50)。

UIFLOW2:

set_led_rgb.png

Angle8Unit.set_led_rgb_from(begin, end, rgb, bright, per_delay)

设置一段 LED 通道范围内的 RGB 颜色和亮度。

参数:
  • begin (int) – 起始 LED 通道(0 到 8)。

  • end (int) – 结束 LED 通道(0 到 8)。

  • rgb (int) – RGB 颜色值(0x00 到 0xFFFFFF)。

  • bright (int) – 亮度等级(0 到 100,默认值为 50)。

  • per_delay (int) – 设置每个通道之间的延迟时间(单位为毫秒,默认为 0)。

UIFLOW2:

set_led_rgb_from.png

Angle8Unit.set_angle_sync_bright(channel, rgb)

将 LED 亮度与角度值同步设置。

参数:
  • channel (int) – LED 通道编号(0 到 8)。

  • rgb (int) – RGB 颜色值(0x00 到 0xFFFFFF)。

UIFLOW2:

set_angle_sync_bright.png

Angle8Unit.get_device_spec(mode)

获取设备规格信息,例如固件版本或 I2C 地址。

参数:

mode (int) – 要读取的寄存器(FW_VER_REG 或 I2C_ADDR_REG)。

UIFLOW2:

get_device_spec.png

Angle8Unit.set_i2c_address(address)

为设备设置一个新的 I2C 地址。

参数:

address (int) – 新的 I2C 地址(1 到 127)。

UIFLOW2:

set_i2c_address.png

Angle8Unit.readfrommem(reg, num)

从设备寄存器读取指定数量的字节。

参数:
  • reg – 要读取的寄存器地址。

  • num – 要读取的字节数。