This is an instructable to create a large (600mm x 400mm) scrolling LED display.
This was a project run at Nottingham Hackspace in the UK along with Instructables. Instructables sent the hackspace hundreds of large (10mm) LEDs to play with and create something good.
Jake Howe and I decided to work on something we could use at events to promote and highlight the hackspace - we both had a similar idea to create some kind of display, so we decided to work together - Jake doing the enclosure and pixel design, while I took care of the electronics and programming.
This timed well with going to Electro-Magnetic Field (EMF camp), a hacker and technology oriented camping festival in the UK.
The end result is a programmable display which runs from 12V DC and can be programmed to show any scolling text you would like. Every LED pixel is conrollable, so we can also create interesting displays.
Step 1: Plan the Design
Nottingham hackspace has a green colour theme, so it was only natural that we used the green LEDs for this display.
We had around 500pcs of these LEDs so we figured out the best and largest arrangement we could do.
We decided that each pixel would be comprised of 4 LEDs which were wired in series along with a series current limiting resistor to run from 12V DC.
We decided that a pixel hight of 8 would be good (mainly due to the eight outputs from each shift register unit) so the most columns we could do was 500pcs / 8x4 = 15.6, so 15 columns. Someone used a few of the green LEDs for another project, which meant we could only do 14 columns, in the end we just did 12 columns.
So our design was 4 LEDs per pixel, 8 pixels high, 12 pixels across. This should give good enough resolution for text and very basic graphics.
Step 2: Design the Enclosure
We had stock of 600 x 400mm laserable plywood and perspex sheets.
So we decided to make the unit that size as a maximum.
Jake Howe set about to create laser cut boards which had 8 x 14 pixels. These had rounded corners and the end result is a noce effect which looks a bit like people thought the future would look like in the past (retro-future?....).
The .dxf designs will be put here.
Step 3: Solder the LEDs
This part was pretty darn boring.
I placed 4 x LEDs in each pixel. I then soldered them in a ring, with the positive of one folded down to join to the negative of the other. The positives of each pixel were soldered to a resistor (330 ohms) wired together (the pixels are controlled by NPN transistors to ground).
The resistor caluclation came from knowing the voltage and reequired current of the LED, along with the supply voltage:
4 x 2.1V = 8.4V and 10mA to flow. The resistor must drop 12V-8.4V = 3.6V and allow a current of 0.01A to flow.
V = I x R, so R = V / I = 3.6/ 0.01 = 360 ohms. 330 ohms was the closest value that I had a lot of, so we used that.
A trailing wire was run from the negative from each pixel. This was controlled by the shift registers to control each pixel.
After soldering 448 LEDs and 112 trailing wires this got pretty boring. Next time a PCB will be built.....
Step 4: Wire to Shift Registers
I used a shift register board which I sell as a kit for a 7 segment LED display.
This is available here:
But that board is pretty basic and just uses the 74HC595 shift register and a UN2003 7 transistor NPN trasistor array. The final pixel is controlled by a BC548 NPN transistor, to give 8 outputs per board.
There is loads more information about using the 74HC595 shift register via the power of google.
I was going to use an arduino compatible microcontroller, so this was very useful:
I needed 1 board per column, so I had to make up 12 boards which were all linked in series.
Linking each board is +12V , +5V, GND, Data, Clock and Latch. To control the output you need to clock out the data into all 96 positions and then set the Latch high - this switches the whole display at the same time.
This can be done very quickly.
Step 5: Control Shift Registers From Microcontroller
I had a Minimus AVR microcontroller lying around.
This is a digital only, USB enabled microcontroller. I had previously wrtitten and instructable about uploading Arduino code to them: https://www.instructables.com/id/Using-Minimus-AVR...
So this microcontroller became the brains of the unit. 3 digital lines are used: Data, Clock and Latch.
I wrote a bit of code to take text, find out what it should look like (with a 7 x 5 constant width font) and then light the correct LEDs. This is held within a frame buffer which is moved on at the scrolling rate and uploaded to all the pixels for every change. This might be a bit intensive on processing, but it makes the code easy and even with very fast scrolling I cannot see any flicker.
Daniel (another hackspace member) wrote a library for doing scolling text on a matrix. His examples are available from github here: https://github.com/daniel1111/MatrixText
You will need these libraries installed to run the code below.
The code is available as a .zip file here for download.
Step 6: Set It Scrolling!
Here is the unit in action. It looks great at night especially at EMF camp where it was used to advertise the opening hours of the Robotic Cocktail Robot that a group at Nottingham Hackspace had built.
Daniel also upgraded the code to include a space between the text to make it much more readable.
Next steps are to work on some nice visual effects or maybe some very low resolution video....