Johan Kritzinger / Mbed 2 deprecated FRDMKL25Z-ShiftBrite

Dependencies:   mbed

Committer:
JoKer
Date:
Wed Aug 20 08:11:28 2014 +0000
Revision:
3:9376bf1f1bbd
Parent:
2:3935d2ed40cd
Child:
4:d2f8ddb423e2
Updated documentation and some code cleanup.

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 3:9376bf1f1bbd 67 //sbDisplay.setCurrentCorr(0x78,0x64,0x64);//sb suggested default
JoKer 3:9376bf1f1bbd 68 sbDisplay.setCurrentCorr(0,0,0);//Dim
JoKer 3:9376bf1f1bbd 69
JoKer 3:9376bf1f1bbd 70 wait(2);
JoKer 3:9376bf1f1bbd 71 PC.printf("INVERTED\r\n");
JoKer 3:9376bf1f1bbd 72 sbDisplay.invert();
JoKer 3:9376bf1f1bbd 73 sbDisplay.displayFrame();
JoKer 3:9376bf1f1bbd 74 wait(2);
JoKer 3:9376bf1f1bbd 75 PC.printf("FLIP\r\n");
JoKer 3:9376bf1f1bbd 76 sbDisplay.flip();
JoKer 3:9376bf1f1bbd 77 sbDisplay.displayFrame();
JoKer 0:f76850de7b57 78 wait(2);
JoKer 3:9376bf1f1bbd 79 sbDisplay.setLed(0,0XFF0000);//Red
JoKer 3:9376bf1f1bbd 80 sbDisplay.setLed(1,0X000500);//Green
JoKer 3:9376bf1f1bbd 81 sbDisplay.setLed(2,0X000005);//Blue
JoKer 3:9376bf1f1bbd 82 sbDisplay.setLed(3,0X050500);//Yellow
JoKer 3:9376bf1f1bbd 83 sbDisplay.setLed(4,0X000505); //Cyan?
JoKer 3:9376bf1f1bbd 84 sbDisplay.setLed(5,0X050005); // Purple
JoKer 3:9376bf1f1bbd 85 sbDisplay.displayFrame(); //get it on the LEDS
JoKer 3:9376bf1f1bbd 86
JoKer 3:9376bf1f1bbd 87 PC.printf("RotateL");
JoKer 3:9376bf1f1bbd 88 unsigned int loop;
JoKer 3:9376bf1f1bbd 89 for (loop=0; loop != 100; loop++){
JoKer 3:9376bf1f1bbd 90 sbDisplay.rotateLeft();
JoKer 3:9376bf1f1bbd 91 sbDisplay.displayFrame();
JoKer 3:9376bf1f1bbd 92 wait(0.1);
JoKer 3:9376bf1f1bbd 93 }
JoKer 3:9376bf1f1bbd 94 PC.printf("RotateR");
JoKer 3:9376bf1f1bbd 95 //unsigned int loop;
JoKer 3:9376bf1f1bbd 96 for (loop=0; loop != 100; loop++){
JoKer 3:9376bf1f1bbd 97 sbDisplay.rotateRight();
JoKer 3:9376bf1f1bbd 98 sbDisplay.displayFrame();
JoKer 3:9376bf1f1bbd 99 wait(0.1);
JoKer 3:9376bf1f1bbd 100 }
JoKer 3:9376bf1f1bbd 101 for(loop=0; loop !=6; loop++){
JoKer 3:9376bf1f1bbd 102 sbDisplay.shiftRight();
JoKer 3:9376bf1f1bbd 103 sbDisplay.displayFrame();
JoKer 3:9376bf1f1bbd 104 wait(0.2);
JoKer 3:9376bf1f1bbd 105 }
JoKer 0:f76850de7b57 106
JoKer 0:f76850de7b57 107 PC.printf("Hallo (size=%d)\r\n", sizeof(unsigned long int));
JoKer 0:f76850de7b57 108
JoKer 0:f76850de7b57 109
JoKer 2:3935d2ed40cd 110
JoKer 2:3935d2ed40cd 111
JoKer 2:3935d2ed40cd 112 sbDisplay.setLed(0,0X0F0000);//Red
JoKer 2:3935d2ed40cd 113 sbDisplay.setLed(1,0X000F00);//Green
JoKer 2:3935d2ed40cd 114 sbDisplay.setLed(2,0X00000F);//Blue
JoKer 2:3935d2ed40cd 115 sbDisplay.setLed(3,0X0F0F00);//Yellow
JoKer 2:3935d2ed40cd 116 sbDisplay.setLed(4,0X000F0F); //Cyan?
JoKer 2:3935d2ed40cd 117 sbDisplay.setLed(5,0X0F000F); // Purple
JoKer 2:3935d2ed40cd 118 sbDisplay.displayFrame(); //get it on the LEDS
JoKer 2:3935d2ed40cd 119 wait(0.5);
JoKer 2:3935d2ed40cd 120 sbDisplay.setCurrentCorr(0,0,0);//Dim
JoKer 2:3935d2ed40cd 121
JoKer 2:3935d2ed40cd 122 sbDisplay.displayFrame(); //get it on the LEDS
JoKer 2:3935d2ed40cd 123 //Alternative to calling displayFrame() yourself, setup the framerate and update the display
JoKer 2:3935d2ed40cd 124 //t.attach_us(&sbDisplay,&shiftBriteDisplay::displayFrame,41666);//call updateFrame 24 times per second (every 41666uS)
JoKer 2:3935d2ed40cd 125 //t.attach(&sbDisplay,&shiftBriteDisplay::displayFrame,0.5);// or only every 0.5s for testing
JoKer 2:3935d2ed40cd 126
JoKer 2:3935d2ed40cd 127
JoKer 2:3935d2ed40cd 128 //USING THE MOVIE CLASS
JoKer 2:3935d2ed40cd 129 //Note, it uses the previously declared sbDisplay object.
JoKer 3:9376bf1f1bbd 130 // movie myMovie(aMovie,sbDisplay,sizeof(aMovie));
JoKer 3:9376bf1f1bbd 131 // myMovie.setRepeat(1);
JoKer 3:9376bf1f1bbd 132 // t.attach(&myMovie,&movie::play,0.05);//Beware, if you go too fast here the MBED will crash
JoKer 0:f76850de7b57 133
JoKer 2:3935d2ed40cd 134 while(1){
JoKer 0:f76850de7b57 135 }
JoKer 0:f76850de7b57 136 }