Spinning LED Display

Color:

Main
Projects
How To Guides
Friend Websites
Other Websites

My Dugg Stories: Temporarily disabled.

Goal: To create a display out of a column of spinning LED's. The user is then to be able to change the display message by sending a string to the microcontroller through the UART. The string is stored in the EEPROM to recall after power down. The microcontroller must be able to convert the string into the corresponding bytes to be displayed on the column of LED's. There must be a form of look up table to store the bytes belonging to each alphanumeric character.

Text

Displaying Text: To display text, it must first be converted into a grid of 8 vertical dots and however many columns it takes to make 1 character. To make it easy, I used a 8pt font size in bitmap and then each vertical dot is a bit in a byte. For every column of the character there is one byte that needs to be stored. The number of bytes per character varies from 11 for a 'W' to 1 for an 'i'. As shown in the picture above, each dot in the column is one bit, the highest dot is the most significant bit in the byte.

Storing Text: Since amount of EEPROM is limited, we do not want to be storing all the columns that would make up the desired message, much less, transferring each column through UART. Thus, I decided to make a look up table for converting a small string message into the corresponding columns. The look up table can then be stored in the massive ROM memory.

One of the problems to overcome is the method of storing the columns so that it is easy and fast to access any random character. There are a few ways to go about doing this. One is to make one array, and allocate the highest necessary columns for each character. For example if 12 (for a 'W') is the most columns needed by any of the stored characters then every 12 bytes a new character will be stored. The problem with this is that there is quickly a lot of wasted memory. With 127 characters in the standard ASCII, this would result in 1524 byte array.

If two arrays are used, one storing the columns of each character only and another storing the beginning address for the character, we can minimize the amount of space wasted. The address array alone would use up 96 bytes, and the columns array would use 583 bytes, using a bold arial font. With this technique we can then store multiple fonts or even special characters in the space that would have been taken up by the first method. With the look up tables in place, all that needs to be transmitted through UART is the string of letters, which is then easily stored in the EEPROM.

Inspiration for making this project came from watching the video below.

08/28/07: I went ahead and added the explanation of storing of a message on the chip. I have written code that takes in a bitmap picture and processes it to output a string of hex values, which I can use to plug into my code. This automates the conversion of creating the definitions of the look up table array. I will post the code later when I finish cleaning it up.

08/13/07: This project has been stalled due to mechanical limitations. Since I liked this project, I came up with a modified version, "Swinging LED Display." The modified version of this project does not have as great mechanical limitations; thereby, making it easier for me to focus more on the electronics and programming.

This website was developed by Elmar Palma. Last updated: 08/28/07.