A few classes to interface one or more ShiftBrite module to the FRDM KL25Z.

Dependencies:   mbed

Committer:
JoKer
Date:
Fri Aug 22 01:18:49 2014 +0000
Revision:
7:a0f62fc80de0
Parent:
4:d2f8ddb423e2
Cleaned up main. Divided into 3 sections to demonstrate various aspects of the libraries and their usage.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JoKer 2:3935d2ed40cd 1 #ifndef MOVIE_H
JoKer 2:3935d2ed40cd 2 #define MOVIE_H
JoKer 2:3935d2ed40cd 3 #include "mbed.h"
JoKer 2:3935d2ed40cd 4 #include "sbDriver.h"
JoKer 2:3935d2ed40cd 5
JoKer 3:9376bf1f1bbd 6 /**movie class
JoKer 3:9376bf1f1bbd 7 * Used to send multiple frames of data to the Shiftbrite display.
JoKer 3:9376bf1f1bbd 8 *
JoKer 3:9376bf1f1bbd 9 * It does not inherit anything but does use a reference to a shiftBriteDisplay object.
JoKer 3:9376bf1f1bbd 10 * Example:
JoKer 3:9376bf1f1bbd 11 * @code
JoKer 3:9376bf1f1bbd 12 * #include "mbed.h"
JoKer 3:9376bf1f1bbd 13 * #include "sbDriver.h"
JoKer 3:9376bf1f1bbd 14 * #include "movie.h"
JoKer 3:9376bf1f1bbd 15 *
JoKer 3:9376bf1f1bbd 16 * //6 leds example. Format it suitably for easy reading
JoKer 3:9376bf1f1bbd 17 * unsigned short int aMovie[] = {
JoKer 3:9376bf1f1bbd 18 *
JoKer 3:9376bf1f1bbd 19 * // LED1 LED2 LED3 LED4 LED5 LED6
JoKer 3:9376bf1f1bbd 20 * 1023,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0, //Frame 0
JoKer 3:9376bf1f1bbd 21 * 0,0,0, 1023,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0, //Frame 1
JoKer 3:9376bf1f1bbd 22 * 0,0,0, 0,0,0, 1023,0,0, 0,0,0, 0,0,0, 0,0,0, //Frame 2
JoKer 3:9376bf1f1bbd 23 * 0,0,0, 0,0,0, 0,0,0, 1023,0,0, 0,0,0, 0,0,0, //Frame 3
JoKer 3:9376bf1f1bbd 24 * 0,0,0, 0,0,0, 0,0,0, 0,0,0, 1023,0,0, 0,0,0, //Frame 4
JoKer 3:9376bf1f1bbd 25 * 0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0, 1023,0,0, //Frame 5
JoKer 3:9376bf1f1bbd 26 * 0,0,0, 0,0,0, 0,0,0, 0,0,0, 1023,0,0, 0,0,0, //Frame 6
JoKer 3:9376bf1f1bbd 27 * 0,0,0, 0,0,0, 0,0,0, 1023,0,0, 0,0,0, 0,0,0, //Frame 7
JoKer 3:9376bf1f1bbd 28 * 0,0,0, 0,0,0, 1023,0,0, 0,0,0, 0,0,0, 0,0,0, //Frame 8
JoKer 3:9376bf1f1bbd 29 * 0,0,0, 1023,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0 //Frame 9
JoKer 4:d2f8ddb423e2 30 * //A simple 'cylon' scanner 'movie'
JoKer 3:9376bf1f1bbd 31 * };
JoKer 3:9376bf1f1bbd 32 *
JoKer 3:9376bf1f1bbd 33 * Serial PC(PTA2, PTA1);//
JoKer 3:9376bf1f1bbd 34 *
JoKer 3:9376bf1f1bbd 35 * //Instanced of DigitalOut for control SB signals
JoKer 3:9376bf1f1bbd 36 * DigitalOut latch(PTC16);//010=latch
JoKer 3:9376bf1f1bbd 37 * DigitalOut enable(PTA13);//0= enabled
JoKer 3:9376bf1f1bbd 38 * DigitalOut reset(PTC12);
JoKer 3:9376bf1f1bbd 39 * //Instance of the SPI contoller for SB data
JoKer 3:9376bf1f1bbd 40 * SPI spi(PTD2,NC,PTD1);//PDT2 = MOSI=DATA. PDT1=CLK
JoKer 3:9376bf1f1bbd 41 *
JoKer 3:9376bf1f1bbd 42 *
JoKer 3:9376bf1f1bbd 43 * int main() {
JoKer 3:9376bf1f1bbd 44 *
JoKer 3:9376bf1f1bbd 45 * //Instanciate a ticker object to handle framerate updates for the SB display
JoKer 3:9376bf1f1bbd 46 * Ticker t;
JoKer 3:9376bf1f1bbd 47 *
JoKer 3:9376bf1f1bbd 48 * //Instanciate a string of 6 sb modules and tell the driver object where the control/data pins are
JoKer 3:9376bf1f1bbd 49 * shiftBriteDisplay sbDisplay(&PC,latch, enable, reset, spi,6);
JoKer 3:9376bf1f1bbd 50 *
JoKer 3:9376bf1f1bbd 51 * movie myMovie(aMovie,sbDisplay,sizeof(aMovie));
JoKer 3:9376bf1f1bbd 52 * myMovie.setRepeat(1);
JoKer 4:d2f8ddb423e2 53 * t.attach(&myMovie,&movie::play,0.05);//Call movie() every 0.05 seconds.Beware, if you go too fast here the FRDM will crash
JoKer 3:9376bf1f1bbd 54 *
JoKer 3:9376bf1f1bbd 55 * while(1){
JoKer 3:9376bf1f1bbd 56 * }
JoKer 3:9376bf1f1bbd 57 * }
JoKer 3:9376bf1f1bbd 58 * @endcode
JoKer 3:9376bf1f1bbd 59 */
JoKer 2:3935d2ed40cd 60 class movie{
JoKer 2:3935d2ed40cd 61 unsigned long int movieSize; //how many BYTES are in the movie array
JoKer 2:3935d2ed40cd 62 //NB, this is NOT the number of frames. frame Tot = ((movieSize/sizeof(unsigned short int))/frameSize)/3
JoKer 2:3935d2ed40cd 63 unsigned short int frameSize; //how many leds are in a display
JoKer 2:3935d2ed40cd 64 unsigned long int currentFrame; // which frame are we displaying now
JoKer 2:3935d2ed40cd 65 unsigned char f_repeat; // repeat when end is reached
JoKer 2:3935d2ed40cd 66 unsigned short int * movie_p;//This is where the movie data is stored
JoKer 2:3935d2ed40cd 67 shiftBriteDisplay r_display;//reference to the display
JoKer 2:3935d2ed40cd 68 public:
JoKer 2:3935d2ed40cd 69 //movie(unsigned short int * movie_p, shiftBriteDisplay &display); // constructor - frameCount=how many frames in the movie
JoKer 3:9376bf1f1bbd 70 /**constructor.
JoKer 3:9376bf1f1bbd 71 */
JoKer 2:3935d2ed40cd 72 movie(unsigned short int * movie_p, shiftBriteDisplay &display, unsigned int movieSize);
JoKer 2:3935d2ed40cd 73 //This must dynamically allocte
JoKer 2:3935d2ed40cd 74 void play();//cycles through all known frames, one frame each time it is called
JoKer 2:3935d2ed40cd 75 void setRepeat(unsigned char r){f_repeat = r;};//repeat from the start or keep on showing the final frame of the movie
JoKer 2:3935d2ed40cd 76 };
JoKer 2:3935d2ed40cd 77 #endif