top of page

DMX Motor Control

An interactive performance uses two DC motors to control two large rings that hang above an open theater space. The movement of these illuminated rings will be controlled by input from two performers moving below the elevated rings. 

This project follows the path to make the addressable DMX motor control device and connect it to Max 8 for real-time interactive control. Max will control the motors with DMX based on the DMXUSB Pro Max abstraction by Oliver Pasquet as well as receive OSC (open sound control) from other applications. This allows for device control from QLab, Isadora, Supercollider or any device that can send OSC commands. An Isadora Example File is included in the file download.

DMX is integrated and a Lighting Designer also has control over the rings via a DMX signal from a lightboard. This fallback is for safety and also to allow collaborative control. I want to make my controller box addressable so we can change the DMX address in order to not interfere with other DMX devices on the network. I include a dip-switch function in the Arduino code for this addressing.

Project System Sketch:

Software and Hardware

Software Control: Max 8


Hardware Programming: Arduino

Conceptinetics DMX Library for Arduino

TTL RS485 converter for Arduino here

Motor Driver: Pololu Dual G2 High-Power Motor Driver 24v18

And Pololu 24v18 Arduino Library 

Dip Switch addressing uses an MCP23017 IO Expansion Board, Expands 16 I/O Pins with i2c

MCP23017 Adafruit Library

Addressable DMX Calculator

Max 8 DMX abstraction

based on Oliver Pasquet's DMX USB PRO abstraction

Code and more technical information found on my Github

Prototyping the Arduino to receive DMX via the TTL RS485 converter:

Final Box Interface DMX addressing with Red Dip Switches

DMX input and DMX Thru output (for daisy chaining devices)


Final Box Interface Output 2 motors 2 fused outputs and on the Right 18v fused input


Arduino, DMX converter board, 10 bit Dip Switch i2c expansion board and Pololu 2Motor Driver


Max Control Patcher receives OSC on port 7400 

integers 0-255 to addresses /ch1 /ch2 /ch3 /ch4 /allOFF



Basic DC Motor Control for Arduino: HERE

Pololu 2 motor Library HERE

To build the DMX Arduino circuit use this instructable:

DMX effect controller HERE

For the Future:

Artnet RGBW Pixel Tape LED control from Max and Madmapper.

Computer Vision from Max to track the Dancers in the space and translate that to OSC for the Motor control.

bottom of page