Page 1 of 1

DMD Build quality

Posted: Tue Apr 10, 2012 6:38 am
by dudleydo
Just got my DMD from Jaycar.

It wasn't plug in and fire it up as described. I had to change the code to suit Arduino 1.0 - which was surprising considering that was/is the latest version of the IDE, plus I am not about to backport it as all the other code I have written works fine under Arduino 1.0 IDE. After that it seems to run quite ok.

The libraries available for the DMD - the drawMarquee function for example - does not seem to handle strings very well, unlike LCD and Serial print functions. I was trying to have a fixed string appended by output from a FT HUMID sensor, and have the complete string passed to the drawMarquee with the length so it scrolls properly. The DHT functions have been removed for clarity for now.

Code: Select all

/*--------------------------------------------------------------------------------------
  Includes
--------------------------------------------------------------------------------------*/
#include <SPI.h>        //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
#include <DMD.h>        //
#include <TimerOne.h>   //
#include "SystemFont5x7.h"
#include "Arial_black_16.h"

//Fire up the DMD library as dmd
#define DISPLAYS_ACROSS 1
#define DISPLAYS_DOWN 1
#define DISPLAYS_BPP 1
#define WHITE 0xFF
#define BLACK 0

DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN, DISPLAYS_BPP);

/*--------------------------------------------------------------------------------------
  Interrupt handler for Timer1 (TimerOne) driven DMD refresh scanning, this gets
  called at the period set in Timer1.initialize();
--------------------------------------------------------------------------------------*/
void ScanDMD()
{ 
  dmd.scanDisplayBySPI();
}

/*--------------------------------------------------------------------------------------
  setup
  Called by the Arduino architecture before the main loop begins
--------------------------------------------------------------------------------------*/
void setup(void)
{

   //initialize TimerOne's interrupt/CPU usage used to scan and refresh the display
   Timer1.initialize( 5000/DISPLAYS_BPP );           //period in microseconds to call ScanDMD. Anything longer than 5000 (5ms) and you can see flicker.
   Timer1.attachInterrupt( ScanDMD );   //attach the Timer1 interrupt to ScanDMD which goes to dmd.scanDisplayBySPI()

   //clear/init the DMD pixels held in RAM
   dmd.clearScreen( BLACK );   //true is normal (all pixels off), false is negative (all pixels on)

}

/*--------------------------------------------------------------------------------------
  loop
  Arduino architecture main loop
--------------------------------------------------------------------------------------*/
void loop(void)
{
   // 10 x 14 font clock, including demo of OR and NOR modes for pixels so that the flashing colon can be overlayed
   // half the pixels on
   dmd.drawTestPattern( PATTERN_ALT_0 );
   delay( 1000 );

   // the other half on
   dmd.drawTestPattern( PATTERN_ALT_1 );
   delay( 1000 );


   dmd.clearScreen( BLACK );
   dmd.selectFont(Arial_Black_16);

//Set String
char* txt2Disp =  "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//Add DHT output
//
//
//Length of final string
//
//
   dmd.drawMarquee(txt2Disp,26,(32*DISPLAYS_ACROSS)-1,0,WHITE,BLACK);
   long start=millis();
   long timer=start;
   boolean ret=false;
   while(!ret){
     if ((timer+35) < millis()) {  // Change +35 for delay
       ret=dmd.stepMarquee(-1,0);
       timer=millis();
     }
   }

   // stripe chaser
   for( b = 0 ; b < 20 ; b++ )
   {
      dmd.drawTestPattern( (b&1)+PATTERN_STRIPE_0 );
      delay( 200 );      
   }
   delay( 200 );      
   
}
Anyway, back to the unit itself. I was looking how to mount the display is some sort of protective cover, which I could use to mount or hang the completed unit. I'd noticed a couple of the small black screws holding the black plastic shroud to the PCB had come loose. I removed them all to check why that was so, and to investigate any other attachment solutions presented by the PCB itself.

I found that ALL of the small black screw hole posts has cracked, some had fallen off completely. I gave the remaining ones a light touch with my small plastic probe, and they fell away too.

I am now left with a display shroud that is not fixed to the PCB at all :shock:

Re: DMD Build quality

Posted: Tue Apr 10, 2012 12:34 pm
by jonoxer
Hi @dudleydo, I'm really sorry the DMD hasn't lived up to your expectations. We have had some problems with getting the screw torque correct in production, and the plastic used on more recent models has also been changed to be a little less brittle which will help reduce that problem.

If you like we can replace that unit under warranty: please email support@freetronics.com with your details and we'll sort it out.
--
Jon

Re: DMD Build quality

Posted: Sun Apr 15, 2012 5:39 pm
by baldgeek
Hi @dudleydo,

I faced much the same issues here, so attached is what I did to get around using the bolt holes, I bought some wood that had a nice wide channel along one side, using hot glue filled in the gaps and held the DMD really well.

Image

Image

So far it been working really well. I have it mounted on the wall of my workshop/studio and it looks pretty good with the wood and black box (which holds the EtherTen and AT psu).

Would love to see how others have mounted their displays.

Cheers,

Ben.

Re: DMD Build quality

Posted: Mon Apr 16, 2012 11:40 am
by jonoxer
Hey Ben, nice work!

What software are you using to drive the display? You mentioned an EtherTen: have you combined networking with the DMD driver?
--
Jon

Re: DMD Build quality

Posted: Mon May 28, 2012 10:38 pm
by baldgeek
For those that follow.....

Yes, I am using UDP to dmd code that others on this forum got working for me.

You can read about it and get the code from the forum thread;

viewtopic.php?f=26&t=661

Cheers,

Ben.

Re: DMD Build quality

Posted: Tue May 29, 2012 12:04 am
by Simon
jonoxer wrote:Hey Ben, nice work!

What software are you using to drive the display? You mentioned an EtherTen: have you combined networking with the DMD driver?
--
Jon
Jon,

You ask this as if there's a known issue here.. could you please elaborate? :)

For the record, I've built a scoreboard project using two DMD displays which gets its data via a TCP connection and it's working well. I did have to disable the interrupt redrawing the DMD while large ethernet transfers were underway, but aside from that it works very well.

Re: DMD Build quality

Posted: Tue Jun 05, 2012 10:56 pm
by jonoxer
Sorry about the slow reply!
You ask this as if there's a known issue here.. could you please elaborate?
Only that I hadn't yet seen anyone do a network-connected DMD yet, but it seemed like a natural fit so I wanted to know more about it. A scoreboard project sounds like exactly the sort of thing a DMD would be good for! Have you put up details of the project anywhere?
--
Jon

Re: DMD Build quality

Posted: Wed Jun 06, 2012 1:43 am
by Simon
jonoxer wrote: A scoreboard project sounds like exactly the sort of thing a DMD would be good for! Have you put up details of the project anywhere?
--
Jon
I did put a thread up here [edit: viewtopic.php?f=6&t=420] , but sans photos or video or any other real detail :) because I haven't taken any yet :lol:

I'll try and get some photos and video taken this Sunday at the next meet ;)