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:
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?

UserRevisionLine numberNew 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 }