Summary of Arduino DMX Tester – Inexpensive Tester for Sending DMX-512
This article details a hobbyist's project to build a low-cost, Arduino-based DMX tester for under $50. The device allows users to input commands via a 4x4 keypad and view status on an LCD screen, enabling the output of DMX signals at specific intensities or channel ranges. The author describes the hardware selection, custom command protocol using alphanumeric keys, and software development stages involving state machines and library integration.
Parts used in the Arduino DMX Tester:
- Arduino UNO board
- 4x4, 16 button keypad (button matrix)
- 4 line by 20 Character LCD display with I2C interface
- CTC-DRA-10-1 DMX / RDM Shield
Hello All,
I work part-time (more of a hobby) in the lighting industry and use DMX since it is the industry standard for communicating or controlling devices (lighting fixtures, controllers, consoles, etc..) I have seen commercial DMX testers on the market but I wanted to create my own.
I have been working on an idea to create a low cost (<$50), Arduino based DMX tester.
The tester would provide the following functionality:
- Simple input protocol for entering commands using 4×4, 16 button keypad.
- Support LCD display, 4 line x 20 character
- Output DMX for single channel or a range of channels at a set intensity level.
The Hardware:
I started with the following:
- An Arduino UNO board
- A 4×4, 16 button keypad (button matrix)
- A 4 line by 20 Character LCD display w I2C (Serial) Interface
- A low cost DMX / RDM Shield purchased from EBay (model: CTC-DRA-10-1, low cost, non-isolated)
The Input Commands:
I wanted to use a 4 x 4 (16) button key pad to input all the commands with a simple / easy to remember protocol (format).
Here is the basic command format:
Channel@Intensity
Start Channel-End Channel@ Intensity
Here is the actual input protocol using only a 4 x 4 – 16 button key pad:
Legend:
XXX = 1 to 512 Channel Number
III = 1 to 256 Intensity Level
Alpha-Numeric Key Mappings:
A = @ (at sign)
B = Bump (not implemented)
D = – (dash)
C = Clear
* = Wildcard value: 512 for channel and 256 for Full intensity
# = Execute
Code Development / Testing:
I developed / tested the code in several stages:
- Keypad input – 4 x 4 (16) button key pad (or switch array)
- LCD display – 4 x 20 Character LCD w I2C interface
- Verify/test the input commands (protocol) were working correctly using a state machine
- Add DMX master (sending) code
The Keypad
Hardware:
I had 3 types of key pads that I played with (switches on a PC board, membrane switch, soft-touch) See the pictures below.
Software:
I started with the Keypad library for easy matrix style keypad mapping. See http://playground.arduino.cc/code/Keypad for more information.
I had to play around with the Row and Column mapping to get my Key Pad switch matrix to work. The pin-out in the documentation wasn’t correct on any of the keypads. So once I determined the correct pin-out, the code worked perfectly.
Here is code snippet showing how to use the Keypad library:
(This is for the 16 switches on PC board)
The LCD display
Hardware:
I used a standard 4×20 character display with I2C (serial) interface which can be purchased from Ebay for about $10.00.
For more detail: Arduino DMX Tester – Inexpensive Tester for Sending DMX-512
- What is the main goal of this project?
To create a low-cost, Arduino based DMX tester for under $50. - How many buttons does the keypad have?
The project uses a 4x4 keypad which contains 16 buttons. - Can the tester output DMX for multiple channels?
Yes, it supports outputting DMX for a range of channels at a set intensity level. - Which library was used for the keypad mapping?
The author started with the Keypad library found on playground.arduino.cc. - What character count does the LCD display support?
The display is a 4 line by 20 character LCD. - How do you execute a command on the tester?
You press the # key to execute the command. - What does the * symbol represent in the protocol?
The wildcard value represents 512 for the channel and 256 for full intensity. - Is the DMX shield included in the project isolated?
No, the CTC-DRA-10-1 shield purchased from EBay is non-isolated.

