DMX controlled LED light with changeable address
LED light with DMX512 control is required for theater. The device should be able to receive data from
whole of DMX address space, and store address in EEPROM.
Numer of channels - 5 (common brightness, R, G, B, Y), with simultaneous control of all or each individually.
Arduino Duemilanove with Atmega328 microcontroller onboard and 4-channel key DMX module are used for drive controlling device.
TM1637 4-digit LED display is used to show address. The controller makes possible drive LED display by two
wires, making circuit less complex. LED strips are used as light source.
DMX signal passes through SN75176, MAX451 or ADM485 RS-485 transceiver, and goes to Arduino Rx.
Appropriate channels of DMX data change PWM levels on transistor keys. Each key drives the 12 V LED strips.
12V 5A industrial regulator is used as power supply. 7805 regulator with heat sink is used as DMX
transceiver and LED display power supply. Assembled without errors, the device should working without any tuning.
Algorithm and Arduino sketch
The device's DMX address is stored in first two bytes of Atmega EEPROM. In receive mode, the address is shown
on LED display. To change address, user can press Mode key to enter address change mode. In this mode, letter
A is also shown on the display. To save current address, user should press Enter key. To cancel storing, user
can press Menu key again. Up and Down keys changes the address, and holding the key increasing change step.
The device uses 5 DMX channels - first controls total brightness, each other - brightness of appropriate LED
strip. DMX address can be changed and either stored or not stored. Changed and not stored in EEPROM address
stay in RAM until the device is shut down. If some of address bytes is equal to stored in EEPROM, it won't
be overwritten. This increases EEPROM resource. Number of channels can be up to 6.
The sketch requires TM1637
Note: Arduino won't flashing during RS-485 transceiver is connected to Rx. While uploading
sketch, disconnect it.
Do not swap RS-485 A and B wires since it cause data to be incorrect.