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).

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 64×32 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).

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.

Parts list:

  • LDP-6432 LED Matrix
  • LED Matrix Controller
  • Arduino Uno
  • Decent current 5V supply (I used my 5A bench PSU)

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

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

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

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

My first words on the display.

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

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);
       
}

7 responses to “Arduino and LED Matrix Display

  1. Hi,
    I’m hitting one or two of those same snags with the EA 1001 and I was wondering if IH of EA ever got back to you?
    My code took your example as a start point to make a countdown timer – some success but:
    1001v4 with latest firmware gives glitchy output via Serial.print(), missing the odd char and sometimes randomly popping a spurious char in, or mis-positioning one. Odd.
    2002v1 works, but locks up after 3 to 30 secs randomly, and needs the reset button /restart to go again.
    All function fine with Screamer and PLT-1003v4 USB-serial module, sending text from my pc.

  2. I’m guessing that there is a timing issue that needs to be addressed in order to overcome a buffer issue. Have you any further experience gleaned from making that very fine display? Like what you did there.

    I found as you did that repeating certain lines 3 or 4 times helped the system to work – did you ever work out why?

    1. Hi Fiachra,
      Thanks for having a look at this project.
      I’m not a great coder, so really bodged the code just to get it to work.
      EA replied, but they had not seen the problem before and were baffled as well.
      Very interesting that you have found the same issues- good to know its not just me!
      Recently we have used these displays again and a better coder than me wrote a library for using the display. More information is available here:
      https://www.re-innovation.co.uk/docs/led-matrix-library/
      and also a GITHUB library here:
      https://github.com/bespokegear/Power_Meter_Display_EA_LED_Matrix
      Again we did things to get it working with the hardware we have. We did not alter the display firmware at all, but I think there is some issue with the EA firmware when using an Arduino….
      Hope the project goes well. Regards, Matt.

  3. Hi, Im working on a Led display 6432 that’s not from embedded adventures using a PLT-2001 from embedded adventures, programming it with and Arduino Mega and this just wont work I’ve tried a lot of things and I ended up with a really simple program just to test the display using the title command from the datasheet:
    https://www.embeddedadventures.com/datasheets/PLT-2001_hw_v1_doc_v1.pdf
    but it doesnt work at all, I wonder if anyone could give me a hand here

    1. My program based on this example is:

      #include

      // Set up the software serial line to put data to the display
      SoftwareSerial mySerial(A5, A1); // 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);
      mySerial.print(“configpanel 64 32 0 2”);
      mySerial.print(“enableactive 0”);
      // mySerial.print(“enableactive 1”);

      }

      void loop() {

      n= n+1;

      for(int y=0;y<64;y++)
      {
      mySerial.print("title");

      delay(5);

      }

      mySerial.print("paint\r");
      mySerial.println(" ");

      delay(100);

      }

      ———————————————————————————————————————————
      and now I just want to test the display to see if I can even control it

  4. Does this board not work directly on arduino, without having to use this control driver?
    I would like some arduino sketch for scrolling text, for example; And how to connect the pins on the Arduino. If anyone can help me, I’m very grateful.

    1. Hi,
      The control board is used to control the display as the Arduino is not quite powerful (speed and memory requirements) on its own. While I am sure someone could get the LED display working directly from the Arduino, the control board just makes it very easy to get the display running.
      With the control board, this can do scrolling text quite easily.
      The display and control board I used all came from Embedded Adventures:
      https://www.embeddedadventures.com/led_matrix_displays_category.html
      They have a number of tutorials about using their LED matrix boards, including using a RPi for this:
      https://www.embeddedadventures.com/Tutorials/tutorials_detail/184

      I have also used the SURE LED matrix boards, such as:
      http://store3.sure-electronics.com/de-dp14211
      These have the HT1632C driver IC and can easily be contolled by an Arduino, with a number of libraries available:
      https://playground.arduino.cc/Main/HT1632C

      Hope thats some help,
      Regards,

      Matt

Leave a Reply

Your email address will not be published. Required fields are marked *