Post
by Buzbot » Mon Dec 26, 2011 9:17 am
Ok,
So it looks like the attachment didnt work. I am sorry to have to do this but below is the code.I didn't want to clug this up with such a long post
// This program will display a rolling message on one line in the middle of the DMD
// This code has been created from modifying the example dmd_demo code which is downloaded from the Freetronics website for use with their DMD
// This code uses the ascii set and format provided in the dmd_demo library. No changes have been made to the code in this library
// In the dmd_demo code there are two lines of text. In this program the second line of code has been removed and the top line has
// been lowered from the top position "0" to the middle of the display, position "4"
// This code uses the various library components which must be downloaded from Freetronics to make the DMD operate
// To set up, firstly get your Freetronics dmd to work with the Freetronics dmd_demo code. This will confirm that the library is set up corectly
// To create your own message you just need to change the text in the pattern that has been created in the code below
// I have selected a 150 ms delay but you can vary the delay to change the pace of the message display.
// Lastly, this is my first attempt at Arduino coding, there is probably more efficient code to create a rolling text message using the Freetronics dmd
// If you can improve on it please post your code on the Freetronics forum
// Enjoy, this is a great product with heaps of potential !!
// This code is the bare minimum code from the Freetronics dmd_demo library that is required to make the dmd operate
// Dont delete any of this, otherwise it wont work
#include <SPI.h> //SPI.h must be included as DMD is written by SPI (the IDE complains otherwise)
#include <DMD.h> //
#include <TimerOne.h> //
DMD dmd; //Fire up the DMD library as dmd
void ScanDMD()
{
dmd.scanDisplayBySPI();
}
void setup(){
Timer1.attachInterrupt( ScanDMD ); //attach the Timer1 interrupt to ScanDMD which goes to dmd.scanDisplayBySPI()
}
// Below is the text of the rolling message
// In the dmd_demo code there are two lines of text. In this program the second line of code has been removed and the top line has
// been lowered from the top position "0" to the middle of the DMD position "4"
// Note that the code begins with the first character beginning on 27 (furthest right hand side)
// Each other character of the message is built from the right so that it reads from left to right
// It is necessary to build each character of the message in this way hence the repitition as each character drops off the left side of the DMD
void loop()
{
// 1st set of text
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 27+0, 4, 'T', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 22+0, 4, 'T', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'h', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 17+0, 4, 'T', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'h', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'e', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 12+0, 4, 'T', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'h', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'e', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, ' ', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 7+0, 4, 'T', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'h', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'e', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'q', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, 'T', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, 'h', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'e', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'q', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'u', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
// 2nd set of text
dmd.drawCharacter_5x7( 2+0, 4, 'h', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, 'e', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'q', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'u', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'i', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, 'e', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'q', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'u', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'i', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'c', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, 'e', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'q', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'u', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'i', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'c', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, 'q', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'u', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'i', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'c', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'k', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
// 3rd set of text
dmd.drawCharacter_5x7( 2+0, 4, 'q', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, 'u', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'i', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'c', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'k', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, ' ', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, 'u', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, 'i', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'c', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'k', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'b', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, 'i', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, 'c', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'k', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'b', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'r', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, 'c', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, 'k', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'b', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'r', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'o', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, 'k', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'b', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'r', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'o', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'w', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, 'b', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'r', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'o', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'w', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'n', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, 'b', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, 'r', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'o', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'w', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'n', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, ' ', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, 'r', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, 'o', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'w', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'w', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'f', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, 'o', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, 'w', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, 'n', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'f', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'o', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
dmd.drawCharacter_5x7( 2+0, 4, 'w', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 7+0, 4, 'n', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 12+0, 4, ' ', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 17+0, 4, 'f', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 22+0, 4, 'o', GRAPHICS_NORMAL );
dmd.drawCharacter_5x7( 27+0, 4, 'x', GRAPHICS_NORMAL );
delay( 150 );
dmd.clearScreen( true );
// then return to the main program loop
}