DMX512 (Digital Multiplex with 512 pieces of information) is a standard for digital communication between lighting controllers, dimmers, scrollers, scanners, and other stage equipment.
The electronic foundation for DMX512 is differential signaling over RS-485.
To send DMX data as a differential signal, use a transceiver like the MAX485 or 75176 (a cheaper version of the Max485).
DmxSimple is a library from Tinker.it! for outputting DMX signals. It is compatible with all recent versions of Arduino. By handling DMX frames in the background, DMX can controlled in a similar way to analogWrite.
(to use DmxSimple with arduino 1.0 have a look here:
http://arduino.cc/forum/index.php/topic,85547.0.html)
karistouf's library implements the ArtNet protocol for both sending and receiving DMX messages via UDP packets.
DMXSerial is a proof of concept on how to send DMX data by just using the hardware serial interface and no assembler code.
Hardware design for how to receive DMX, developed by Max Pierson.
- A very simple DMX receiver, based upon the DMX Receiver C code by Henne Henne's Site, German. Slightly adapted for Arduino, the code allows receiving DMX with an Arduino without using Timer/CTC stuff. Read more
Deskontrol four universes dmx library for arduino mega, this library allows up to four DMX universes as inputs or outputs, and does not use timers. In the examples can be found as merging two universes into a single output. With Arduino nano can only use an input or output.
To send DMX from Arduino we use a driver chip like MAX485 or 75176 (the 75176 is just a cheaper version of the Max 485). The use of these drivers is a common way of transmitting and receiving dmx. You will find them in almost every dimmer/scroller etc.
The following explanations and examples are made for arduino Software 004 and 005. They will not work with other Versions, because of the change in the 'delayMicroseconds'.
-However in the code example section you will find a nice looking piece of code from two great Hungaryn guys (Peter Szakal and Gabor Papp ( http://nextlab.hu ) which works for arduino 008, at least.
-Since evolution keeps going on, here is a very nice code, working for a Duemilanove (tested on 013 and 017), thanks to Jason Ditmars
Downloads: