Rev13 of the Arduino DMX Reception Software Released

By Max

New in this version:

  • Tested and working with IDE version 0016.
  • The number of channels to receive is now easily user-configurable.
  • Replaced static variables with #define statements for RAM optimization (+48 bytes, woot!).

You can grab it here or mosey on over to the original post for the instructions.

Ed. Note: This is no longer the latest version.  Head to here for the latest.


13 Responses to “Rev13 of the Arduino DMX Reception Software Released”

  • jeff reckart Says:

    Please tell me that the DMX sheild is available for purchase! I have no ability to make PCB board!!!

  • Max Says:

    Hi Jeff,
    I have no plans to produce and support the board commercially, this is a DIY solution. There are commercial solutions that may meet your needs, such as the tinker.it DMX receiver, and others.

    That being said, in the main post there are instructions to get you going on breadboard, and etching a PCB is not difficult or expensive to learn how to do– especially when the etching mask and parts list are provided (see the shield hardware post). I’d give it a whirl, if you’re going to be working with the Arduino it’s a skill that will pay you back many times over.

  • Andrew Says:

    Max,

    CuteDigi is very interested in your project, and has made some bare PCBs: http://www.cutedigi.com/product_info.php?cPath=284&products_id=4292.

    Thanks,

  • Max Says:

    That’s great! They look much more professional than mine. One thing I would recommend is that you actually populate one of those boards with real parts. I think you’ll find that the XLR and termination switch pins are a little larger than the holes shown, from the look of it.

    Sorry about that, I was doing the holes with the dremel so it was easy to make them larger as needed– I didn’t expect someone to use a fab house. I’ll see if I can figure out how to show that correctly in the Eagle files.

    Also, can you credit me, and not Michael Tyson, who designed the WordPress theme I’m using but is otherwise unaffiliated with this site?

  • Andrew Says:

    Max,

    Sorry about that. We changed it to you, Max Pierson. Our next step is to build and hopefully carry the assembled version.

  • Arne Mauer Says:

    Is it true you can only use two pwm channels? When using two pwm channels on one timer it crashes…

  • Ed Says:

    Any new builds that work with the latest Arduino 17?

    Thanks for all the hard work!

    Ed

  • Mac Says:

    Any comments on what might happen if I add an interrupt to sync with the AC line for zero crossing?

  • Mac Says:

    To reply to Ed:

    I did a compare of the HardwareSerial.cpp file from Ard 17 and this project. The same code is still there, but the 17 version had some other differences. So I commented out the same portion (it hadn’t changed) and it seems to compile. I have not confirmed functionality as yet…

  • Joshua Says:

    Max,

    I’ve managed to get it to compile in ver17, but I had to comment out the following section:

    #if defined(__AVR_ATmega8__)
    SIGNAL(SIG_UART_RECV)
    #else
    SIGNAL(USART_RX_vect)
    #endif
    {
    #if defined(__AVR_ATmega8__)
    unsigned char c = UDR;
    #else
    unsigned char c = UDR0;
    #endif

    store_char(c, &rx_buffer);
    }

    For some reason, if I have NUMBER_OF_CHANNELS set to anything but 1, it simply doesn’t work, and no matter to what I set dmxaddress, channel 2 in my software is the one which is controlling my Arduino. Mind you, I’m using FreeStyler and not either of the ones you’ve used, but FreeStyler is a rather popular one and I’m guessing that it work properly. Sadly, I don’t have any proper DMX hardware to test whether it’s the my code bashing or the software.

  • Ed Says:

    Max,
    I will try the commenting out you suggested later tonight and see if I have the same results. If you go back to some of the early versions the complete setup of the usart is done in the program not using serial begin() etc. I think this is a superior method of configuration. I have made a version that does RGB LED fading with a serial screen to display the address and a rotary push-button encoder to set the address.(I will post it with video) It works very well. BUT the normal arduino is almost useless for any real dmx projects. Not enough pins for stepper motors and DIP-switch addressing and….. So i have been trying to transition the code to the ArduinoMega1280. Very frustrating! I am trying to now move the the DMX reception to USART3 because I think that would be the USART least likely to be affect by the arduino libraries for other things(normal arduino only has one Mega has 4)Then I can run the serial screen off USART0 etc. All my code compiles on the 1280 but i think I am having vector issues because it never gets into the “loop” just waits for dmx.

  • Ed Says:

    http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1265334220

    DMX-512 RX w/ serial LCD and Rotary Encoder Addr

  • Kieren Says:

    Hey ed, did you manage to get this going on a Mega1280? If so can you please let me know, kieren (at) voipotago.co.nz or post on here. I had to go back to arduino 0017 to get it to work though on a mega328. Would also like more ports so that i can have an lcd so mega would be better

Leave a Reply