Johan Kritzinger
/
FRDMKL25Z-ShiftBrite
A few classes to interface one or more ShiftBrite module to the FRDM KL25Z.
movie.cpp@7:a0f62fc80de0, 2014-08-22 (annotated)
- Committer:
- JoKer
- Date:
- Fri Aug 22 01:18:49 2014 +0000
- Revision:
- 7:a0f62fc80de0
- Parent:
- 3:9376bf1f1bbd
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 | #include "mbed.h" |
JoKer | 2:3935d2ed40cd | 2 | #include "movie.h" |
JoKer | 2:3935d2ed40cd | 3 | #include "sbDriver.h" |
JoKer | 2:3935d2ed40cd | 4 | |
JoKer | 2:3935d2ed40cd | 5 | movie::movie(unsigned short int * movie_p, shiftBriteDisplay &display, unsigned int movieSize):r_display(display){ |
JoKer | 2:3935d2ed40cd | 6 | //Constructor - sets up initial condition |
JoKer | 2:3935d2ed40cd | 7 | //r_display = display; //setup a reference to the actual display |
JoKer | 2:3935d2ed40cd | 8 | this->movie_p = movie_p; // pointer to the data. This data is simply and array of short integers but sequenced as frames |
JoKer | 2:3935d2ed40cd | 9 | //i.e. if the display has 2 leds and the data is {12,13,14,15,16,17,18,19,20,21,22} then the first frame is 12,13,14+15,16,17 |
JoKer | 2:3935d2ed40cd | 10 | //corresponding to rgb_led1 and rgb_led2 |
JoKer | 2:3935d2ed40cd | 11 | currentFrame = 0; |
JoKer | 2:3935d2ed40cd | 12 | frameSize = r_display.getModuleCount(); |
JoKer | 2:3935d2ed40cd | 13 | this->movieSize = movieSize; // in BYTES. Need to (((movieSize/sizeof(unsigned short int))/frameSize)/3) to get actual frames |
JoKer | 2:3935d2ed40cd | 14 | } |
JoKer | 2:3935d2ed40cd | 15 | |
JoKer | 3:9376bf1f1bbd | 16 | /** |
JoKer | 3:9376bf1f1bbd | 17 | * Used to play through a data 'movie' array, one frame each time this member function is called. |
JoKer | 3:9376bf1f1bbd | 18 | */ |
JoKer | 2:3935d2ed40cd | 19 | void movie::play(){ |
JoKer | 3:9376bf1f1bbd | 20 | /*Advance therough the movie one frame whenever this member method is called |
JoKer | 2:3935d2ed40cd | 21 | Display is referenced with r_display |
JoKer | 3:9376bf1f1bbd | 22 | */ |
JoKer | 2:3935d2ed40cd | 23 | |
JoKer | 2:3935d2ed40cd | 24 | unsigned int dot = 0; |
JoKer | 2:3935d2ed40cd | 25 | unsigned short int rTemp, gTemp, bTemp; |
JoKer | 3:9376bf1f1bbd | 26 | |
JoKer | 2:3935d2ed40cd | 27 | //moduleCount is how many LEDS, assume 4, called frameSize |
JoKer | 2:3935d2ed40cd | 28 | //currentFrame is how many frames we've loaded |
JoKer | 2:3935d2ed40cd | 29 | //currentDot is which module in the frame, i.e. 0-3 in this example |
JoKer | 2:3935d2ed40cd | 30 | for(dot = 0; dot != frameSize; dot++){ |
JoKer | 2:3935d2ed40cd | 31 | rTemp = *(movie_p + ((currentFrame*frameSize*3)+(dot*3)+0)); |
JoKer | 2:3935d2ed40cd | 32 | gTemp = *(movie_p + ((currentFrame*frameSize*3)+(dot*3)+1)); |
JoKer | 2:3935d2ed40cd | 33 | bTemp = *(movie_p + ((currentFrame*frameSize*3)+(dot*3)+2)); |
JoKer | 2:3935d2ed40cd | 34 | r_display.setLed(dot,rTemp,gTemp,bTemp); |
JoKer | 2:3935d2ed40cd | 35 | } |
JoKer | 2:3935d2ed40cd | 36 | |
JoKer | 2:3935d2ed40cd | 37 | r_display.displayFrame();//update the display - MAKE IT HAPPEN |
JoKer | 2:3935d2ed40cd | 38 | |
JoKer | 3:9376bf1f1bbd | 39 | currentFrame++;//Advance to the next frame |
JoKer | 2:3935d2ed40cd | 40 | //Check bounds |
JoKer | 2:3935d2ed40cd | 41 | if((currentFrame)>=((movieSize/sizeof(unsigned short int))/frameSize)/3){ |
JoKer | 2:3935d2ed40cd | 42 | if(f_repeat == 1) currentFrame = 0;//start from first frame |
JoKer | 2:3935d2ed40cd | 43 | else currentFrame--; //force to repeat last frame |
JoKer | 2:3935d2ed40cd | 44 | } |
JoKer | 2:3935d2ed40cd | 45 | } |