DMX512 模块
DMX-Base 是专为 DMX-512 数据传输场景设计的功能底座,通过串口与 M5 主机通信并实现控制,配备 XLR-5 和 XLR-3 公头与母头接口,方便用户连接不同接口的 DMX 设备。此外,该模块还提供 HT3.96 间距的 485 接口,便于连接 Expansion 485 设备。
支持以下产品:
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 module import DMX512Module 9import time 10 11 12Title = None 13label1 = None 14label0 = None 15module_dmx_0 = None 16 17 18ch_data = None 19 20 21def setup(): 22 global Title, label1, label0, module_dmx_0, ch_data 23 24 M5.begin() 25 Widgets.fillScreen(0x222222) 26 Title = Widgets.Title( 27 "DMX512Module Send example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18 28 ) 29 label1 = Widgets.Label("Not Sent", 2, 129, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 30 label0 = Widgets.Label( 31 "Not initialized", 2, 76, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18 32 ) 33 34 module_dmx_0 = DMX512Module(2, mode=1) 35 ch_data = 0 36 label0.setText(str("Initialized")) 37 38 39def loop(): 40 global Title, label1, label0, module_dmx_0, ch_data 41 M5.update() 42 label1.setText(str("Not Sent")) 43 ch_data = ch_data + 1 44 if ch_data >= 255: 45 ch_data = 0 46 module_dmx_0.write_data(1, ch_data) 47 module_dmx_0.write_data(2, ch_data) 48 module_dmx_0.write_data(3, ch_data) 49 label1.setText(str("Sent")) 50 time.sleep(0.7) 51 52 53if __name__ == "__main__": 54 try: 55 setup() 56 while True: 57 loop() 58 except (Exception, KeyboardInterrupt) as e: 59 try: 60 from utility import print_error_msg 61 62 print_error_msg(e) 63 except ImportError: 64 print("please update to latest firmware")
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 module import DMX512Module 9 10 11Title = None 12label0 = None 13label1 = None 14module_dmx_0 = None 15 16 17dmx_data = None 18dmx_data2 = None 19 20 21def module_dmx_0_channel1_receive_event(received_data): 22 global Title, label0, label1, module_dmx_0, dmx_data, dmx_data2 23 dmx_data = received_data 24 label0.setText(str((str("Channel 1:") + str(dmx_data)))) 25 26 27def module_dmx_0_channel2_receive_event(received_data): 28 global Title, label0, label1, module_dmx_0, dmx_data, dmx_data2 29 dmx_data2 = received_data 30 label1.setText(str((str("Channel 2:") + str(dmx_data2)))) 31 32 33def setup(): 34 global Title, label0, label1, module_dmx_0, dmx_data, dmx_data2 35 36 M5.begin() 37 Widgets.fillScreen(0x222222) 38 Title = Widgets.Title( 39 "DMX512Module Rec example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18 40 ) 41 label0 = Widgets.Label("Channel 1:", 0, 82, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 42 label1 = Widgets.Label("Channel 2:", 0, 134, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 43 44 module_dmx_0 = DMX512Module(1, mode=2) 45 module_dmx_0.attach_channel(1, module_dmx_0_channel1_receive_event) 46 module_dmx_0.attach_channel(2, module_dmx_0_channel2_receive_event) 47 module_dmx_0.receive_none_block() 48 49 50def loop(): 51 global Title, label0, label1, module_dmx_0, dmx_data, dmx_data2 52 M5.update() 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")
UiFlow2 应用示例:
UiFlow2 从机应用示例:
dmx512_core2_send_example.m5f2
dmx512_core2_receive_example.m5f2
class DMX512Module
构造函数
Methods
- DMX512Module.dmx_init(mode) None
使用 UART 引脚和模式初始化 DMX512 通信。
- 参数:
mode – 工作模式(1 为 Master,2 为 Slave)。
UiFlow2

- DMX512Module.write_data(channel, data) None
更新指定 DMX 通道的数据。数据将在下一个更新周期发送。
- 参数:
channel – DMX 通道编号(1 - 512)。
data – 要发送的数据值(0 - 255)。如果通道编号超出范围,将引发 ValueError。
UiFlow2

- DMX512Module.read_data(channel) int
在 Slave 模式下,从指定的 DMX 通道读取数据。
- 参数:
channel – DMX 通道编号(1 - 512)。
UiFlow2

- DMX512.receive_none_block() None
为指定通道启动非阻塞数据接收,并关联相应的回调函数。
UiFlow2

- DMX512Module.attach_channel(channel, callback) None
将回调函数绑定到指定的 DMX 通道。
- 参数:
channel – 要绑定回调函数的 DMX 通道编号(1-512)。
callback – 当指定通道上的数据发生变化时要调用的函数。
UiFlow2

- DMX512.stop_receive() None
停止非阻塞数据接收任务。
UiFlow2






