Email Print

No image

I was asked to build a BIG LED display for a pedal powered cinema for a film group in Brussels (more about that in another post).

I found these huge displays from Embedded Adventures and had wanted an excuse to have a play with one of them for a while.

This is a post about getting the display working with an Arduino Uno.

The final unit

This was the final display that I created - it was a scrolling red bar graph behind a green number. The number shows power in watts and the red bar shows a power up to 1000W (full height background line).

No Image

Its hard to photo, as its quite bright and has a refresh rate, but this shows the concept.

Again, a slightly bad video. The flicker is caused by the refresh rate of the screen and the camera and cannot be seen by the human eye.

Hardware

I ordered the 64x32 P4 LDP-6432 LED matrix. This is around 260mm x 130mm with LED pixels able to do four colours (black(!), red, green and red+green=yellow).

No Image

I wanted to keep things simple and get this project working quickly, so I also ordered the PLT-1001 LED Matrix Driver, again from Embedded Adventures.

No Image

Parts list:

This was wired together so the serial Tx output from the Arduino was wired to the serial Rx input of the LED Matrix Controller.

No Image

The LED matrix (with hand for scale). They also do an even larger one.

No Image

The back of the display showing the 5V power cables - this takes up to 3A when all the LEDs are lit.

No Image

The test set-up, with matrix controller, LED matrix, 5V 6A DC/DC converter (mid left) and Arduino controller (top left corner)

No Image

My first words on the display.

No Image

The display was mounted into a large plastic enclosure, and held with 6 wooden clamps.

No Image

The input/output cables go to one side. The front has a laser-cut frosted display cut from 3mm acrylic.

Software

Embedded Adventures provide a lot of details about their products and encourage people to hack them.

In this case I was using their LED Matrix Controller which is designed to take text commands via a serial line (at 115200 baud) and display images. There are lots of simple commands covered in the datasheet here. The unit is controlled with a "draw" buffer and a "display" buffer. This means you can create the image/display you want to show (the "Draw" buffer) before it appears on the display, you can then write the "draw" buffer to the "display" buffer, which is shown on the display.

The LED matrix controller takes care of all the interface commands with the LED Matrix (which uses a 4 wire serial interface).

Issues

I uploaded a simple Arduino code which draws a row of red LEDs along with a green number in front of the red block.

When I ran the code I noticed that there were glitches and sometimes the lines were not drawn. A short video of the issue is here.

You can see some lines are not drawn. (The constant flicker is due to the camera/refresh rate issue)

It took me a long time but I eventually thought to roll back the firmware (version 3.02) to the previous firmware (version 2.10) to try that out. Embedded Adventures provide a detailed guide to uploading new firmware, which I did using an FTDI USB to serial cable.

The same code works fine with version 2.10 of the firmware.

This worked to display with no glitches at all. I am unsure quite why that is, but with exactly the same Arduino code the newer version of the firmware gives glitches and the older version does not.

I have contacted Embedded Adventures about this and this blog post explains and highlights the issue.

After figuring this out then I created a really great Power display for the pedal powered cinema I have recently been working on in Brussels.

Arduino code

This is the Arduino code I used to test the display.

It clears the display (which is done three times, just in case it is not received), it sets the font to a certain size (5 in this case which is large), it then uses the text command to draw a number which counts up. It then draws a 5 led high line along the bottom of the display.

I used the SoftwareSerial library to output data to the matrix controller. I used pin A2 as the Tx and pin 20 (out of range of the Arduino) as a receive pin, as I never want to receive any of the data and (for this project) had a lack of I/O pins.

// A test program for sending data to
// An Embedded Adventures LED dsiplay board

#include <SoftwareSerial.h>

// Set up the software serial line to put data to the display
SoftwareSerial mySerial(20, A2); // RX, TX

int n = 0; 

String string;
//String string2;

void setup() {
  // put your setup code here, to run once:
  // set the data rate for the SoftwareSerial port
  mySerial.begin(115200); 
  

}

void loop() {
  // put your main code here, to run repeatedly:
  
    // Clear the LED display (just in case)
    mySerial.print("clear\r");
    delay(5); 
    mySerial.print("clear\r");
    delay(5); 
    mySerial.print("clear\r");
    delay(5);     
    mySerial.print("font 5\r");
    delay(5);
    
    mySerial.print("text 2 11 15 ");
    mySerial.print('"');
    mySerial.print(n);
    mySerial.print('"');
    mySerial.print("\r");
    
    n= n+1;
    
    for(int y=0;y<64;y++)
    {   
      mySerial.print("line 1 ");
      mySerial.print(y);
      mySerial.print(" 31 ");
      mySerial.print(y); 
      mySerial.print(' ');
      mySerial.print('26');
      mySerial.print('\r');
      mySerial.print('\r');  
      delay(5);

    }     

    mySerial.print("paint\r");
    mySerial.println(" ");   
    
    delay(100);
       
}