GLO: the Midnight Message Board and RSS Display




Introduction: GLO: the Midnight Message Board and RSS Display

About: Im a Student in A levels who is deeply into Electronics and Computing. Most of my electronics knowledge has been achieved through tinkering around with stuff...

As a little kid, I remember the Glow in the Dark stars and shapes one could stick on their ceiling for night time view, frankly I remember the shapes being extremely boring

Older, equipped with some basic electronics knowledge and a deep interest in innovative display systems, I thought of a way of transforming my Rooms wall into a dynamic glow in the dark canvas.

While doodling on a Vinyl Glow in the Dark paper with a bright white light, i realized an interesting display could be built from it: GLO.

GLO consists of an array of 5mm UV LEDs that run on a simple linear axis, powered by long thread and a Stepper motor. The UV leds act like pixels, turning on at the right time, and drawing our desired text on UV sensitive surface such as my Wall (paper).

The result is a cool mystic, message board that glows in the dark and displays Twitter Trends, RSS Feeds, and Custom Text on my wall…slowly fading out.

Warning: Lying in bed watching  favorite news slowly fade out, can make you (me atleast) very sleepy.

Here is a Video of it, pulling and printing a Sports Headline from BBC on my wall:

This is also a contest entry, if you like it please vote for it :)

Step 1: Building the UV LED Array

I am building this as per my resources and what I think is the most efficient way to implement this. When you are building  be sure to let the Inventor in you come out,  do stuff the way it suits you. Nevertheless this is how I implemented mine

So in this step we will be focusing on building the UV Led Array that will act as our Drawing Pen.

Parts you need for this step:
1 x 2” by 3” Perfboard
12 x 5mm UV Leds
12 x 220ohm Resistors
2 x 74HC595 Shift Registers
2 x IC Mount/Holder
1 x Some hookup wire
1x  7 wire Ribbon Cable (the length should be a a little longer than your display length)

Tools you need:
Helping Hands
Soldering Iron
Wire Cutter
Wire Stripper

Start by placing everything on the perfboard, and think about how you are going to solder everything in place, it’s a small perfboard, so everything will be quite snug. You might find it easier to use Helping Hands to hold everything while you solder.
The leds have to be positioned at the centre of the board while the other components at either side of these.
Before you start soldering everything, just place all the components in their places to make sure everything will fit well and will conveniently connect together when needed.

Here is the important bit, the leds will only leave a sharp impression on the UV sensitive surface if they are right up against it. Currently, as it stands, the Shift registers in their Sockets protrude out, however we want the leds to protrude just a few millimeters above the IC’s

Keeping that in mind, let’s begin soldering, I recommended removing everything from the perfboard and soldering the component in this order.
Place the IC sockets in their place, and solder them. Next place the resistors, and ONLY solder their common leads. Next bend the resistor leads and solder to achieve a common ground connection between each resistor. Snip the excess.

Next place the leds in place, ONE BY ONE, it is important that you get their orientation (Short lead -, Long lead +) and height right. They should protrude about 2-3mm from the ICs. Now solder each LEDs negative, (short lead) to its respective resistor.
Repeat this for each LED, carefully making sure they are all level with each other.

Now follow the schematic and make all the required connections, because the board is quite small you will have to come up with innovative ways to make the connections (messy). The Terminal Block in the diagram is a representation of the Ribbon Cable.

Solder your ribbon cable at one end of the perfboard, and connect all the wires that will be connected to the arduino to it.

The order of the connections on the ribbon cable are not important as long as you remember (label them!) which one is which. For me, the order was dictated by which connection was the easiest to form.
I ended up with:
Master Clear, Ground, 5v, Clock, Data, Output Enable, Latch

Yours may differ.

Once everything is soldered, you need to divide the 12 LEDs, into a group of 6 LEDs, this will form 2 lines of text. Gently push the leds apart until you have 6 at either side with a little gap in between.

If you are getting confused about any step, do check out all the photos, i have attached loads of them.

Once that is done, give yourself a pat on the back and lets move on to testing.

Step 2: Testing the UV LED Array

Testing is very simple, you want to check if all the leds are lighting up and are wired correctly. For this I have attached a test sketch that you should run on the Arduino. Make sure the defined pins correspond to your connections.

Connect your LED Array to the Arduino using a breadboard and a few wires, next download the sketch and upload it to the Arduino, if you have soldered and connected everything properly then the sketch should TURN ON EACH LED ONE BY ONE.

Brace yourself, a bit of theory coming up...

Step 3: A Bit of Theory

Heres a little theory behind this project which will help you understand and customize the displayed text.

The Led array displays text by imprinting a section of a character as it moves along the glowing surface. Each character consists of a 6x5 Bit pattern. The Arduino sketch cycles through each column of each character in our message. As mentioned earlier, our 12 LED array is split into 2 groups, which means we can write 2 lines and about 45-50 Characters between each refresh time. 

Our sketch stores each character as a 2 dimensional array and then refers to the index using corresponding  ASCII Codes.

The sketch also consists of 2 Main write Routines. WriteOut1, writes to the first line and WriteOut2 to the second line. If lets say we have a Message that is 50 characters long then, Line one would display 35 and the remaining 15 will automatically be written to the second line.

WriteOut1 is rather simple, lets say we have a character column B10110100 (last 2 bits will always be 0 as each character is a max 6 bits long), this will be shifted out to the only the first Shift Register and the corresponding LEDS will be lit up, ie, on-off-on-on-off-on-off-off.

WriteOut2 is a bit more complicated, for this we have you use part of WriteOut1 aswell. Lets say we have the byte B11001100 that we want to shift out to the second group of 6 leds, we would first need to shift out B00000011 (First 2 bits of our byte combined with six leading Zeros) to the first shift register and then the remaining B00110000 (Rest of the Byte shifted up) to the second shift register.

Enough of the Theory lets move on to building the axis..

Step 4: Font Generation

Now a bit on how i designed the 6x5 Font (it wasnt easy) and how you could design your own font for this:

Download the program called "PixelFontEdit" from:

2) Next click File --> Open --> Navigate to the install directory --> Fonts -->pf -->and open the desired font file
3) Perform any changes you want such as rotate, invert etc, (I deleted an existing font file and wrote my own 6x5 font here.)
4) Click File --> Export as C include -->save the file in a location
5) Navigate to this file, open in notepad and edit the format as follows:

unsigned char font[2048] =
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Char 000 (.)
0x7E, 0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E, // Char 001 (.)
0x7E, 0xFF, 0xDB, 0xFF, 0xC3, 0xE7, 0xFF, 0x7E, // Char 002 (.)
0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00, // Char 003 (.)
0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00, // Char 004 (.)
0x3C, 0x3C, 0x18, 0xFF, 0xE7, 0x18, 0x3C, 0x00, // Char 005 (.)

char font[][8] =
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},                   // Char 000 (.)
{0x7E, 0x81, 0x95, 0xB1, 0xB1, 0x95, 0x81, 0x7E},                 // Char 001 (.)
{0x7E, 0xFF, 0xEB, 0xCF, 0xCF, 0xEB, 0xFF, 0x7E},              // Char 002 (.)
{0x0E, 0x1F, 0x3F, 0x7E, 0x3F, 0x1F, 0x0E, 0x00},             // Char 003 (.)
{0x08, 0x1C, 0x3E, 0x7F, 0x3E, 0x1C, 0x08, 0x00},          // Char 004 (.)
{0x18, 0x18, 0x5B, 0x6F, 0x6F, 0x5B, 0x18, 0x18}          // Char 005 (.)

Basically you have to enclose the bit patterns of each character in a curly bracket.
IMPORTANT: Do not delete any unwanted characters , as the order of the elements are very important! (ASCII based character referring   )

I have shown the example for only 5 characters, you should do this for all the characters in the file (I know its loooong).

6) Once completed save the text file, you will need to copy this text file into the Arduino Sketch mentioned further on.

NOTE: I have designed both upper case and lower case characters, however, i advise you to only print using Upper case characters as the lower case look a bit funny with a 6 bit height.
Now for some Building!!

Step 5: To the Wall

In this step we will mount everything to a wall that will serve as our displaying surface
You will need:

The hardware:
• A stepper motor
• A 3D printed or improvised wall mount for the stepper motor
• Parcel thread/string
• 4 x 25mm round hooks
• A screw to fix the motor mount on the wall
• 2x M3 screw to fix the motor to the mount
• 2-3 sheets of Glow in the dark A4 Vinyl Inkjet Paper depending on the size of your wall.
• A weight. You need a suitable heavy object to act as the counter weight for our linear axis. I am using the stand of my soldering helping hands. A 300-500g weight would do.

The Electronics:
• A step stick stepper motor controller.

Note on the Glow in the Dark Surface:

The most important part of ths project is the glow in the dark surface, the perfect surface is one that glows sharply and has a glow time of a few minutes. I tried many things before going with sheets of A4 vinyl paper, I found out that they had the sharpest glow and decent glow life (5-6 minutes). You could try glow in the dark paint, but preparing a surface with this paint is a pain; not only do you have to apply multiple layers of paint, the end result is a blurry glow, which is not suitable for our message board. However if you get around this somehow, the end result is a very short glow life (1-2 minutes) which means you can display messages fairly quickly! I found mine on Ebay UK.

Also when choosing a Colour, i learnt that Red and Violet have the shortest glow life and Green has the longest glow life.

Lets start building the wall mount:

At first measure the wall you want to mount the display, and depending on that cut appropriate lengths of parcel string. The parcel string should be atleast 2.5 times the length of your display area. 

Next leave about 3 inches from all sides of the wall and mark the vertices of a rectangle, whose width is 3-4 inches bigger than your desired display length and the height is about 10-12 inches. The dimensions are not that strict.

Drill holes, and drive the hooks into the wall, in all but one of the vertex; The bottom right vertex will hold our motor.

The end result should be 3 hooks and a motor mount fixed on the wall.

Next, take one end of your parcel string and wind it round the motor shaft a couple of times and tape it so it doesn’t slip, guide the the string through the hook above the motor, then thread it through the holes on the perfboard. 
Finally guide the string through the remaining hooks and attach the weight on the free end of the string.

Now you want to make a Motor Shaft End Stop, so that the winded string doesnt slip from the end of the motor shaft. You can do this in many ways, i just taped a 15mm screw at the end of the motor shaft, this suprisingly held the string in place

Make sure the string is tense and has only 2-3 winding on the motor shaft, now move your LED array to the left most side of the axis by hand, making sure the string doesnt move.

Now, tape or glue your glow in the dark paper to the wall, making sure that all LEDs are on it. I used 2 glow in the dark sheets, so taped them one after another, making sure they are flush next to each other.

Last but not least, wire everything up; Connect your ribbon cable to the arduino, and connect your motor to the Driver Board and then to the arduino. I have attached many pictures for the whole setup

Now we are finally ready to upload our code and display some text! YAY!

Step 6: Schematics

This part lists the all the schematics you need to follow for this build. 

1) UV led Array:

The order of the Terminal Block pins in the schematic that connect to the arduino (Top to Bottom):
Serial In, Output Enable, Latch, Clock, Master Clear, Positive 5V, Ground.

2) Arduino + Stepper Motor + UV led
I am using the step stick and i have attached the schematic for that. 

All the pins can be connected to the Arduino in any order. Make sure you define the pins your are using!

Step 7: The Software + First Run

This part will describe all of the software needed for our message board to fianlly run...

There are 2 main software we need, the Arduino Sketch and the Python Script that will fetch and send the RSS feeds to out Arduino.

I have uploaded both of these here

The python Script only fetches, parses and sends RSS Feeds to the arduino via the Serial port and the Arduino sketch sends the corresponding signals to the Stepper Motor and Led Array.

Download the Arduino Sketch and upload it to the Arduino, next download the python script, make sure the Led array is at the left most side of its travel. Un plug the motor supply, run the script and after the Arduino stabilizes quickly plug in the Power Supply back, after about 5 seconds you will the Display moving, writing text. The Script will then pause for 300 seconds and Write messages again.

The sketch accepts a string of text via the serial port, which means you can also type in custom messages in the Arduino IDE Serial Monitor.

Start Experimenting! 

I hope you liked my inscrutable. This is my first inscrutable, i am looking forward to your feedback in the comments so i can improve my explaining skills :) oh, and this is also m first ever contest entry, if you like my inscrutable PLEASE VOTE FOR IT :) 

If you need further explanation or help in any step let me know in the comments.

Make It Glow Contest

First Prize in the
Make It Glow Contest

Supercharged Contest

Participated in the
Supercharged Contest

Be the First to Share


    • Pocket-Sized Speed Challenge

      Pocket-Sized Speed Challenge
    • Super-Size Speed Challenge

      Super-Size Speed Challenge
    • Audio Challenge 2020

      Audio Challenge 2020

    63 Discussions


    6 years ago on Introduction

    i had a similar project in my mind for ages. i really enjoyed reading your instructable and looking forward to build my own now!

    i got some questions:

    - how and why are you editing the format of your bitmap font? i don't understand the changes. maybe you can describe the process of editing more.

    0x7E, 0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E, // Char 001 (.)
    {0x7E, 0x81, 0x95, 0xB1, 0xB1, 0x95, 0x81, 0x7E}, // Char 001 (.)

    - why are you using a stepper-motor? wouldn't it be much cheaper to drive a dc-motor?

    -third: i dont see the advantage of using a 6x5 font. can u explain why you havent take a 8x8 or 5x5 bit pattern?

    -and last: i dont understand why you are so complicated whith the shift registers. you could easily do the first line of text with the one, and the second line of text with the other shiftregister. i dont see the advantage of splitting your letter up.

    id would be nice if you could answer my questions. im sorry for my bad english.

    best regards, norman

    Adi M
    Adi M

    Reply 6 years ago on Introduction

    I am glad you liked my project. Now to answer your questions:

    As you can see i am using 12 LEDs, i would ideally want 2 lines that would have the same size of characters therefore i split the leds into pairs of 6. That is, 6 LEDs for the first line and 6 LEDS for the second line. For this reason i needed to make my own font, 5x5 Fonts are common so are 8x8, but as i couldnt find a 6x5 Font i made one. My font is simple, each character has a length of 6 pixels (6 LEDS!) and a width of 5 pixels.

    This leads me to your third question, Shift registers usually work with 8 bit inputs and 8 bit outputs and that is how the function Shiftout is designed, but here my character pattern is only 6 bits (6 LEDS) so rather than writing a function that accepts B111111 (six bits) and only writes to the first line, i just merged both lines so each time i would have 8 bits to shift; that is 6 bits for the first line and 2 for the second line, and for the second shift register the remaining 4 bits for the second line. So this makes the process much simpler.

    And now the second question; frankly speaking i used what i had lying around, but i also thought that having a stepper motor would give me room to add functionality in the future as i would have precise position control. I don't see any problem in using a geared DC motor though.

    If you do build one, post the link here! :)


    Reply 6 years ago on Introduction

    So you use a 6x5 pixel-font because you had 12 LEDs. i just wondered because its unusual.

    I already found out that the chars are signed/unsigned (first question).

    The shiftregisters also work with 6 bit in-and output. so i dont see the benefit in splitting the second line up. its just more work to code.

    Adi M
    Adi M

    Reply 6 years ago on Introduction

    PS i just remembered one of the main reasons i did this: My circuit, i had used 8 Led's for the first register and only 4 for the second one, meaning 2 bits of the second lit of text was controlled by the first register. Yes i could fix that by rewiring but, software? why not ;)

    Adi M
    Adi M

    Reply 6 years ago on Introduction

    i urge you to try it out and you will understand. its fine you can write 6 bits to the Shiftregister but that would by default set the 2 unused bits to 0. Nevertheless have a go, i would like
    to so your implementation.


    Reply 6 years ago on Introduction

    and thanks for the fast response. i will let you know if i build one!


    6 years ago on Introduction

    Wich torque has your stepper motor. Can you tell me the motor you are using?.

    Adi M
    Adi M

    Reply 6 years ago on Introduction

    thankyou :) i love your project too !


    6 years ago on Introduction

    I've visited for the last... well, a long time anyways - never once have I ever felt the need to sign up or comment on any project.
    But this, this is truly amazing and I felt the need to let you know that!
    I have voted for this project!

    Adi M
    Adi M

    Reply 6 years ago on Introduction

    wow thankyou so much :) this means a lot as this is my first published project. thankyou for your vote :)


    6 years ago on Introduction

    Very cool project! Well written, approachable, unique concept, and cool looking! I've always had a soft spot for glow-in-the-dark things.

    I like the idea of "printing" on the back of the paper, could make a box with the paper held in a frame with the writer behind it. This would make it more portable, and allow for uglier but more solid "print-head" drive, like a threaded rod, CNC style. Could even have a second rod for stability to keep the LEDs as close to the paper as possible.

    I have a couple of questions:
    Do the UV LEDs flash visibly for the human eye as they do on the video?
    If you "print" faster, I'm sure it will fade faster, did you try to find a balance here or was there a different limit to the "print" speed?

    Got my vote! Thanks for sharing!

    Adi M
    Adi M

    Reply 6 years ago on Introduction

    Thanks very much for your kind words. I initially was thinking of a box/frame style display, but the only problem is the short text length,even a decent sized frame could display a 10-12 Chars at a max! One way around this is to use SMD UV Leds, but i had trouble finding them; who knows maybe version 2.0 ;).

    As far as glow life is concerned, there are 3 ways you can control it:
    1) Material, as mentioned in my instructable, use a Red Glow in the dark surface for the shortest glow time.

    2) Light Intensity, again as i mentioned this is what i went for, currently with no dimming i was getting 5 min rewrite time, which is decent. If i reduce the brightness it can be even shorter

    3)Speed, as you rightly mentioned, moving it quicker means less exposure so yes shorter glow time. But with this setup its quite hard achieving fast speeds as im not using any pulley or gears.

    and no, there isnt a strict balance, because one way of the other, you get a glow life about a couple of minutes, so currently i just ran it at a maximum safe speed.
    i hope that answered your question :)


    Reply 6 years ago on Introduction

    I'm also interest to know what the human eye can see in a darkened room from the UV LED's? I assume there may be a very slight purple-ish flashing but nothing as obvious as the camera picks up? Is that right?

    Adi M
    Adi M

    Reply 6 years ago on Introduction

    Yes Exactly, there is only a slight glow visible.