The Big Plan
When planning this project and without knowing the exact difficulty ahead of us, our group decided that we wanted to create a sign that can display messages and graphics. We wanted it to be easy to use and have it programmed in such a way that other students of other staff members can easily program a message to the display and have scroll right or left. During the planning stage and when reviewing the literature we realized that in order to accomplish this goal we had to divide the project into high and low level functions areas where a particular group member can dedicate themselves to a particular area of the project. These task were divided according to skills sets and interest areas of the group members.
The Types of Tasks
The low level functions tasks included; addressing the physical hardware on the Dot Matrix Display (DMD) with the micro controller to display the correct data and other similar functions. This area had to figure out the algorithms used by the two hardware to processed the data. This area of the project relied heavily on the limited literature review of manuals, online communities etc… However finding the right information was sometimes impossible as we didn’t find anyone else who used the same hardware and had to create our own approaches to create our program.
The high level functions tasks involved creating and manipulating the data to be displayed on the DMD and to build a user library of functions and controls. These tasks involved creating a library of symbols and functions that allows a user to simply type-and-display their messages. Our group wanted to create a system that other users can use it to program the display and therefor had to come up with clever functions that were easy to use but still gave flexibility to the users.
The First Tasks
The achieve the goals mentioned above, our group’s first task was to created a unified addressing system for the data that can be common to both the high and low level functions. Without realizing at the time but later this arrangement made it very convenient to create a simulator of the DMD. The helping hand of a simulator allowed for multiple group members to work together and helped our group deliver much more than initially anticipated.
Creation of Addressing System and XY Function
In order to address the display data in memory, a two dimensional array was considered the most the most similar to the physical location of the light emitting diodes (LEDs) within the display. On further consideration a table of arrays was decided upon and labelled XY. With this function, two numbers on the stack would return the address of the byte required, these are the number of bytes to index from left, or X, and number of rows to index from top, or Y.
In planning memory usage, additional bytes were allocated to each side of the visible display for staging data, metadata or similar purpose such that 1 1 XY would return the address of the byte containing the data within the top left corner of the display. By addressing the data in this way multiple bytes could be written at once if required, for example doing a double write (2!) to 1 5 XY would assign data to all 32 LEDs on row 5 and can make for much faster/easier updating of the DMD where appropriate. For further details on this function see the XY coordinate addressing page.
Simultaneously work on both low level and high level functions
With this common addressing system it became possible to split the tasks within the project and for all team members to be contributing simultaneously to individual tasks as well as collaboration on any issues found without having to wait for access to resources.
A progressive and modular approach was taken towards building up both the low and high level functions, some of these milestones are highlighted below:
Low Level Function Development Milestones
High Level Function Development Milestones