Low Resolution Display Done Right

80,201

528

60

A resolution of 8x8 pixels may not sound like enough for anything interesting, but with the right setup, it is possible to create beautiful, complex animations and even add some interactivity.

In the next pages I will detail the steps needed to build the low-res display you see in the video below.

Step 1: Parts and Tools

The parts needed are:
- An LED matrix driver, I used a Rainbowduino from Seeed studio
- An RGB LED matrix compatible with the Rainbowduino
- A mini USB extension cable, used to bring out the connection from the board
- A wooden box
- Foam core board or a piece of card board
- A sheet of tracing paper
- Nylon standoffs for mounting the PCB.
- Optional: volume sensor / other amplified microphone

More details are in the attached BOM

The tools needed
- A drill
- A ruler
- A pair of scissors
- A box cutter
- A Pencil
- Paint brushes and paint
- Hot glue gun
- A screw driver

You will also need some adhesive tape.

Step 2: The Box

We will use a wooden box as the enclosure of the system.
I used a box sized 16x16x7cm, but any box big (and deep) enough will do.

- Disassemble the box - this is essential to allow easy drilling and painting
- Measure, mark and drill the holes for the PCB (3.5mm dia). Make sure that the holes match the ones on the board and that the board will be centered inside the box.
- Make the hole for the usb socket. It should be a bit bigger than the connector to leave room for glue.
- Cut a window in the lid of the box. I made it 9x9cm and used a box cutter. Using a laser cutter or a dremel tool can be easier.
- Paint the insides of the box and the lid in black. This is important to improve the contrast of the display.
- Paint the outside in whatever color you like. I used white because it looks nice and does not compete with the animations.
- Reassemble the box

Step 3: The Diffuser Screen

The diffuser screen is made of a sheet of tracing paper, mounted on a frame made of foam core or cardboard.
I chose to use tracing paper as it is cheap, easy to find and gives the right balance between transparency and diffusion.

- Cut a square of foam-core sized to match the inside of the lid. Mine was 14.5x14.5cm
- Cut a window in the center of the square which is a little bigger than the window you made in the lid. Mine was 10.5x10.5cm
- Paint one side of the frame black. Again, this is important to improve contrast.
- Cut a square of tracing paper smaller than the size of the frame but larger than the size of the window. I made it ~12x12mm
- Attache the tracing paper to the foam core frame. I used adhesive tape as wet glue deforms the tracing paper

Step 4: Assembly

Now it's time to put everything together

- Glue the female side of the USB cable to the inside of the hole on the box. Hot glue worked well for me
- Secure the standoffs to the box
- Connect the male side of the cable to the connector on the PCB
- Optionally, connect the microphone to the relevant pins on the PCB (vcc, gnd and scl/a5)
- Mount the PCB on the spacers
- Mount the LED matrix to the PCB
- Tuck the diffuser screen inside the lid - it should be held in place by friction.

Step 5: Firmware

Now comes the fun part.
The Rainbowduino includes an FTDI chip so it can be programmed exactly like an arduino duemilanove.
You will need the Rainbowduino libraries available from here.

To get started, try the examples that come with the library. There are also some example sketches I made available in this repository:
https://github.com/giladaya/arduino-led-matrix

More complex animations can be achieved using my particle system library which is available here with several examples:
https://github.com/giladaya/arduino-particle-sys

If you attached a microphone, some of the examples in this library use its input to affect the animation,  as can be seen in the following videos



Try playing with the parameters of the animations or think of new ideas, it's addictive!

Note:
I picked the length of the standoffs to be 15 mm after some experimentation.
According to your specific diffuser material, you may need a different distance - experiment to get the best results.

Enjoy!

Share

    Recommendations

    • Optics Contest

      Optics Contest
    • Plastics Contest

      Plastics Contest
    • Make it Glow Contest 2018

      Make it Glow Contest 2018

    60 Discussions

    0
    None
    jeffatwork1

    1 year ago

    Have just built and started playing around with this, and I have a question. For the FlameSound sketch, how would I go about making the flame wider at its base, or origin. Currently only 2 leds light up for the bottom of the flame, I would like to see it at 3 or 4 leds for the base.

    0
    None
    ArifSae

    2 years ago

    a lovely and different idea.

    0
    None
    bwsteeves

    3 years ago

    Loved this project. Thanks!

    0
    None
    Boarderguy12

    4 years ago on Introduction

    I cannot believe how amazing this project is!! But I need help!! PLEASE! I ordered the Rainbowduino from SeedStudio and the 8x8 led matrix. My problem is that I have never used an Arduino for anything before and cannot figure out how to program the code. What I think I understand is that the code was written to work for both the colorduino and the arduino hence the notes at the top of the code that note to change the values for the particular boards. I have programs a few of the easy example displays and got them to work but when I try to "verify" the code of the fire/plasma/emitter it tells me; " 'Rb' was not declared in this scope" and when trying another version I stumbled across it says; " 'ColorduinoScreenWidth' was not declared in this scope". Any and all help will be much appreciated! Thanks in advanced!

    0
    None
    Boarderguy12

    4 years ago on Introduction

    I cannot believe how amazing this project is!! But I need help!! PLEASE! I ordered the Rainbowduino from SeedStudio and the 8x8 led matrix. My problem is that I have never used an Arduino for anything before and cannot figure out how to program the code. What I think I understand is that the code was written to work for both the colorduino and the arduino hence the notes at the top of the code that note to change the values for the particular boards. I have programs a few of the easy example displays and got them to work but when I try to "verify" the code of the fire/plasma/emitter it tells me; " 'Rb' was not declared in this scope" and when trying another version I stumbled across it says; " 'ColorduinoScreenWidth' was not declared in this scope". Any and all help will be much appreciated! Thanks in advanced!

    0
    None
    ANDRBE

    4 years ago on Introduction

    Can I just use the max7219 chip instead of Rainbowduino?

    0
    None
    shizumadrive

    4 years ago on Step 5

    My computer just wont show the rainbowduino at all. I install the vcp drives and other stuff. Have everything and can't test it. Did you need to install anything to get it to detect?

    1 reply

    I figured out my problem didnt have right libraries in arduino ide and was using wrong board. Think I might have had led board in wrong way too. Yeah I did about everything wrong I could.

    0
    None
    Antoliveira

    5 years ago on Introduction

    Nice project
    Thank you. I tested each program with 2 rainbowduinos and everything worked well. fantastic!
    Never thought in a next project to make a spectrum analyser using two rainbowduinos? (left and right channel)
    I just would like to do it, but i'm a newbie and rainbowduino is not well documented...

    0
    None
    mikey1102

    5 years ago on Introduction

    hi nice project having a few complications thow do i need an Arduino to program the files on or how do i get the files on sorry my first project.
    thank you
    mike

    0
    None
    shibs1

    5 years ago on Introduction

    Hi Gilad

    Again, thank you for sharing your firmware with the community. I thought I'd share with people my design at:

    http://www.youtube.com/watch?v=BgS68LQ0R4A

    I added a grey transparent sheet between the tracing paper and an outer piece of clear perspex to enhance the contrast in higher ambient lighting conditions. Too be honest I'm actually not very happy with how the casing turned out, and I think I'll make a more 'conventional' square casing in the future to suit the aspect of the square RGB matrix (I think I was being just a little too clever and it never worked)

    I think my favourite display is your 'spin' example. Very beautiful..and forever changing. Mesmerizing...

    0
    None
    d4ng

    5 years ago

    Any ideas of where to start to make this function on a one color matrix? The animations are so fantastic it would be great to use them on multiple matrices

    0
    None
    giladayawshankles

    Reply 5 years ago on Introduction

    SCL is the label of the pin on the Rainbowduino to which you should connect the microphone.
    This pin is also called A5 and is one of the pins which are capable of analog input. This means it allows to measure different levels of audio volume vs just 0 or 1.

    It is hard to see from the picture you attached whether this mic is amplified or not, but it needs to be amplified for the microcontroller to be able to read the audio levels.

    0
    None
    rhaber

    5 years ago on Introduction

    Hi

    Firstly, I'd like to say what a beautiful creation you have made. It is amazing what can be done with so few relative pixels to achieve that 'higher resolution look'. Congratulations. It is a really nice gesture of you to share with the world your firmware which has obviously taken a lot of time to produce. It is because of people like you that all the light based projects I have built over the years were even possible.

    Based on your Instructable I have ordered the Rainbowduino and an RGB LED matrix. I am also seriously thinking about upscaling the display size to 2 or 3 times the size in this instructable for maybe a wall mounted display. According to the datasheet the MY9221 LED drivers in the Rainbowduino are rated to 17V. So, in theory, a custom 8x8 matrix could be made, where each of the 64 'pixels' would be made from 4 Red individual LEDs in series, 4 Blue individual LEDs in series, and 4 Green individual LEDs in series, all layed out in an appropriate pattern to maximise the uniformity of the colour mixing. Or maybe I'll just see if there are suitable high power RGB LEDs already available.

    It is hard to tell from your videos but, does the display look good (ie. good contrast) in normal room lighting (with no external daylight)? I can imagine if the ambient lighting is too great then the contrast would reduce markedly. Of course, if one was using a much brighter custom 8x8 matrix display then maybe a (contrast enhancing) plain grey filter could be placed over the front tracing paper to increase the contrast in bright ambient conditions.

    Thank you again for sharing. Todah Raba.

    3 replies
    0
    None
    giladayarhaber

    Reply 5 years ago on Introduction

    Hey,
    Thanks for your kind words :)
    I think it looks pretty good in a lit room at night.
    During the day in a room with an open window, you can see the animation, but some of the subtleties are lost as the light "masks" the dimmer pixels.

    0
    None
    shibs1giladaya

    Reply 5 years ago on Introduction

    Hi

    Thanks for your reply. My LED matrix just arrived today but I think it is the wrong type as it appears to be in a semi-clear package (despite the ebay page saying it's a clear package), and the LED intensity is quite low as a result (I realise it's not going to 'super' bright because of the 1/8 duty cycle current source it's being driven with). The model number on the back (ie. pin side) of my LED matrix is CILE 2088RGB-5. Could you confirm the model number on the back of your LED matrix? Maybe it is something like ORM 2088RGB-5?

    Thank you again

    0
    None
    giladayashibs1

    Reply 5 years ago on Introduction

    Yeah, I have 2 such matrices and both have that model number: ORM 2088RGB-5