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