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

Dependencies:   mbed

Committer:
JoKer
Date:
Wed Aug 20 05:24:38 2014 +0000
Revision:
2:3935d2ed40cd
Parent:
0:f76850de7b57
Child:
3:9376bf1f1bbd
Add movie class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JoKer 0:f76850de7b57 1 #include "mbed.h"
JoKer 0:f76850de7b57 2 #include "sbDriver.h"
JoKer 2:3935d2ed40cd 3 #include "movie.h"
JoKer 0:f76850de7b57 4 /*MUST TRY THIS!!!!
JoKer 0:f76850de7b57 5 Inheritance is one of the great features of object oriented languages like C++. The stream methods are not included in serial to allow you to use them in other classes as well. They are for example also included in the TextLCD class and in my enhanced TextLCD class. All you need to do to make use of the powerful printf features is implement a putc() method in your own new class.
JoKer 0:f76850de7b57 6 from https://mbed.org/questions/1029/pcprintf-a-method/
JoKer 0:f76850de7b57 7
JoKer 0:f76850de7b57 8 */
JoKer 0:f76850de7b57 9
JoKer 2:3935d2ed40cd 10 //6 leds example. Format it suitably for easy reading
JoKer 2:3935d2ed40cd 11 unsigned short int aMovie[] = {
JoKer 2:3935d2ed40cd 12 /* LED1 LED2 LED3 LED4 LED5 LED6 */
JoKer 2:3935d2ed40cd 13 1023,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0, /*Frame 0*/
JoKer 2:3935d2ed40cd 14 0,0,0, 1023,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0, /*Frame 1*/
JoKer 2:3935d2ed40cd 15 0,0,0, 0,0,0, 1023,0,0, 0,0,0, 0,0,0, 0,0,0, /*Frame 2*/
JoKer 2:3935d2ed40cd 16 0,0,0, 0,0,0, 0,0,0, 1023,0,0, 0,0,0, 0,0,0, /*Frame 3*/
JoKer 2:3935d2ed40cd 17 0,0,0, 0,0,0, 0,0,0, 0,0,0, 1023,0,0, 0,0,0, /*Frame 4*/
JoKer 2:3935d2ed40cd 18 0,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0, 1023,0,0, /*Frame 5*/
JoKer 2:3935d2ed40cd 19 0,0,0, 0,0,0, 0,0,0, 0,0,0, 1023,0,0, 0,0,0, /*Frame 6*/
JoKer 2:3935d2ed40cd 20 0,0,0, 0,0,0, 0,0,0, 1023,0,0, 0,0,0, 0,0,0, /*Frame 7*/
JoKer 2:3935d2ed40cd 21 0,0,0, 0,0,0, 1023,0,0, 0,0,0, 0,0,0, 0,0,0, /*Frame 8*/
JoKer 2:3935d2ed40cd 22 0,0,0, 1023,0,0, 0,0,0, 0,0,0, 0,0,0, 0,0,0 /*Frame 9*/
JoKer 2:3935d2ed40cd 23 /*A simple 'cylon' scanner 'movie'*/
JoKer 2:3935d2ed40cd 24 };
JoKer 2:3935d2ed40cd 25
JoKer 0:f76850de7b57 26 Serial PC(PTA2, PTA1);//So I can use Bluetooth/Serial as output to terminal and input
JoKer 0:f76850de7b57 27
JoKer 0:f76850de7b57 28
JoKer 0:f76850de7b57 29 DigitalOut myled(LED1);
JoKer 0:f76850de7b57 30
JoKer 0:f76850de7b57 31 //Instanced of DigitalOut for control SB signals
JoKer 0:f76850de7b57 32 DigitalOut latch(PTC16);//010=latch
JoKer 0:f76850de7b57 33 DigitalOut enable(PTA13);//0= enabled
JoKer 0:f76850de7b57 34 DigitalOut reset(PTC12);
JoKer 0:f76850de7b57 35 //Instance of the SPI contoller for SB data
JoKer 0:f76850de7b57 36 SPI spi(PTD2,NC,PTD1);//PDT2 = MOSI=DATA. PDT1=CLK
JoKer 0:f76850de7b57 37
JoKer 0:f76850de7b57 38
JoKer 0:f76850de7b57 39 int main() {
JoKer 0:f76850de7b57 40
JoKer 0:f76850de7b57 41 //Instanciate a ticker object to handle framerate updates for the SB display
JoKer 0:f76850de7b57 42 Ticker t;
JoKer 0:f76850de7b57 43
JoKer 0:f76850de7b57 44 //Instanciate a string of 5 sb modules and tell the driver object where the control/data pins are
JoKer 0:f76850de7b57 45 shiftBriteDisplay sbDisplay(&PC,latch, enable, reset, spi,6);
JoKer 0:f76850de7b57 46
JoKer 0:f76850de7b57 47 //Example calls to method f() of shiftBriteDisplay class
JoKer 0:f76850de7b57 48 //sbDisplay.setLed(0,0X550000);
JoKer 0:f76850de7b57 49 //sbDisplay.setLed(4,0XFF,0X00,0X55);
JoKer 0:f76850de7b57 50 //in this case, 6 of these statements wold be required to build one frame
JoKer 2:3935d2ed40cd 51
JoKer 2:3935d2ed40cd 52
JoKer 2:3935d2ed40cd 53 //HOW TO BUILD A FRAME IF YOU ARE NOT USING THE MOVIE CLASS
JoKer 2:3935d2ed40cd 54 sbDisplay.setLed(0,0XFF0000);//Red
JoKer 0:f76850de7b57 55 sbDisplay.setLed(1,0X00FF00);//Green
JoKer 0:f76850de7b57 56 sbDisplay.setLed(2,0X0000FF);//Blue
JoKer 0:f76850de7b57 57 sbDisplay.setLed(3,0XFFFF00);//Yellow
JoKer 0:f76850de7b57 58 sbDisplay.setLed(4,0X00FFFF); //Cyan?
JoKer 2:3935d2ed40cd 59 sbDisplay.setLed(5,0XFF00FF); // Purple
JoKer 0:f76850de7b57 60
JoKer 2:3935d2ed40cd 61 //HOW TO ADJUST THE CURRENT CONTROLLERS USED FOR DOT CORRECTION
JoKer 0:f76850de7b57 62 sbDisplay.setCurrentCorr(0,0,0);//suggested default value cor current control regs. Values g&b=100, r=120
JoKer 0:f76850de7b57 63 sbDisplay.displayFrame();//force an update
JoKer 0:f76850de7b57 64 wait(2);
JoKer 0:f76850de7b57 65 sbDisplay.setCurrentCorr(127,127,127);//This should be MAX
JoKer 0:f76850de7b57 66 wait(2);
JoKer 0:f76850de7b57 67 sbDisplay.setCurrentCorr(0x78,0x64,0x64);//sb suggested default
JoKer 0:f76850de7b57 68 wait(2);
JoKer 0:f76850de7b57 69
JoKer 0:f76850de7b57 70 PC.printf("Hallo (size=%d)\r\n", sizeof(unsigned long int));
JoKer 0:f76850de7b57 71
JoKer 0:f76850de7b57 72
JoKer 2:3935d2ed40cd 73
JoKer 2:3935d2ed40cd 74
JoKer 2:3935d2ed40cd 75 sbDisplay.setLed(0,0X0F0000);//Red
JoKer 2:3935d2ed40cd 76 sbDisplay.setLed(1,0X000F00);//Green
JoKer 2:3935d2ed40cd 77 sbDisplay.setLed(2,0X00000F);//Blue
JoKer 2:3935d2ed40cd 78 sbDisplay.setLed(3,0X0F0F00);//Yellow
JoKer 2:3935d2ed40cd 79 sbDisplay.setLed(4,0X000F0F); //Cyan?
JoKer 2:3935d2ed40cd 80 sbDisplay.setLed(5,0X0F000F); // Purple
JoKer 2:3935d2ed40cd 81 sbDisplay.displayFrame(); //get it on the LEDS
JoKer 2:3935d2ed40cd 82 wait(0.5);
JoKer 2:3935d2ed40cd 83 sbDisplay.setCurrentCorr(0,0,0);//Dim
JoKer 2:3935d2ed40cd 84
JoKer 2:3935d2ed40cd 85 sbDisplay.displayFrame(); //get it on the LEDS
JoKer 2:3935d2ed40cd 86 //Alternative to calling displayFrame() yourself, setup the framerate and update the display
JoKer 2:3935d2ed40cd 87 //t.attach_us(&sbDisplay,&shiftBriteDisplay::displayFrame,41666);//call updateFrame 24 times per second (every 41666uS)
JoKer 2:3935d2ed40cd 88 //t.attach(&sbDisplay,&shiftBriteDisplay::displayFrame,0.5);// or only every 0.5s for testing
JoKer 2:3935d2ed40cd 89
JoKer 2:3935d2ed40cd 90
JoKer 2:3935d2ed40cd 91 //USING THE MOVIE CLASS
JoKer 2:3935d2ed40cd 92 //Note, it uses the previously declared sbDisplay object.
JoKer 2:3935d2ed40cd 93 movie myMovie(aMovie,sbDisplay,sizeof(aMovie));
JoKer 2:3935d2ed40cd 94 myMovie.setRepeat(1);
JoKer 2:3935d2ed40cd 95 t.attach(&myMovie,&movie::play,0.05);//Beware, if you go too fast here the MBED will crash
JoKer 0:f76850de7b57 96
JoKer 2:3935d2ed40cd 97 while(1){
JoKer 0:f76850de7b57 98 }
JoKer 0:f76850de7b57 99 }