Johan Kritzinger
/
FRDMKL25Z-ShiftBrite
A few classes to interface one or more ShiftBrite module to the FRDM KL25Z.
movie.h@7:a0f62fc80de0, 2014-08-22 (annotated)
- 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?
User | Revision | Line number | New 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 |