Contributing Updates

The Dot Matrix Display (DMD) is a 32x16 array of high-brightness LEDs for visually striking effects. [Product Page]
Post Reply
Joined:Thu Apr 07, 2016 8:09 am
Contributing Updates

Post by nickm37 » Thu Apr 07, 2016 8:29 am


I used the DMD2 Library on GIT hub as a basis for a timing board. I had a 2H x 3W arrangement of DMDs.

In getting this working I have implemented a couple of new functions and a couple of bug fixes. I have also created some more useful fonts.
I created a git hub account - but can't see how to branch it.

After playing with 6 panels I would not recommend using a 16MHz Ardurino for more than this - the interrupt routine just takes too long.

Added Tahoma font (sized for 32 px high)
Added 7 Seg Numbers (sized for 32 px high and width for 2x6 display timer eg +00:00)

inline int pixelToBitmapIndex(unsigned int x, unsigned int y)
Fixed bug with pixel address lookup when working with six panels ( 2Hx3W ).

In the ISR: - added sei(); instruction. Required when running multiple panels as timer interrupt was missed occasionally when update DMD interrupt was running. if you are wounding why your time duration's are too long - this will fix it.
(This will be less noticable on less displays, but for 6, a minute was approx 50% longer...)

Implemented void DMDFrame::setByte
Implemented void DMDFrame::drawXLine (Optimizes drawing lines across display by updating bytes rather than each pixel. Note it still uses single pixel updates at each end to a byte boundry)
Optimised void void DMDFrame::drawFilledBox using drawXLine
Optimised void DMDFrame::drawBox using drawXLine

So please advise how I can get my first open source improvements into the main trunk :-)

P.s. more documentation would be nice... for more panels it would be good to be able to clock out multiple rows of panels DMDs at once.

Freetronics Staff
Freetronics Staff
Joined:Tue Apr 09, 2013 11:19 pm
Location:Melbourne, Australia

Re: Contributing Updates

Post by angusgr » Wed Apr 13, 2016 6:44 am


Thanks for getting in touch! We'd be very happy to see your contributions.

The process you need to follow on github is called "forking the repository" (to get your own copy) and then "sending a pull request" (from your fork to our fork).

More details can be found here:



Post Reply