Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- JoKer
- Date:
- 2014-08-19
- Revision:
- 0:f76850de7b57
- Child:
- 2:3935d2ed40cd
File content as of revision 0:f76850de7b57:
#include "mbed.h"
#include "sbDriver.h"
/*MUST TRY THIS!!!!
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.
from https://mbed.org/questions/1029/pcprintf-a-method/
*/
Serial PC(PTA2, PTA1);//So I can use Bluetooth/Serial as output to terminal and input
DigitalOut myled(LED1);
//Instanced of DigitalOut for control SB signals
DigitalOut latch(PTC16);//010=latch
DigitalOut enable(PTA13);//0= enabled
DigitalOut reset(PTC12);
//Instance of the SPI contoller for SB data
SPI spi(PTD2,NC,PTD1);//PDT2 = MOSI=DATA. PDT1=CLK
int main() {
//Instanciate a ticker object to handle framerate updates for the SB display
Ticker t;
//Instanciate a string of 5 sb modules and tell the driver object where the control/data pins are
shiftBriteDisplay sbDisplay(&PC,latch, enable, reset, spi,6);
//Example calls to method f() of shiftBriteDisplay class
//sbDisplay.setLed(0,0X550000);
//sbDisplay.setLed(4,0XFF,0X00,0X55);
//in this case, 6 of these statements wold be required to build one frame
//BUILD A FRAME
/*sbDisplay.setLed(0,0XFF0000);//Red
sbDisplay.setLed(1,0X00FF00);//Green
sbDisplay.setLed(2,0X0000FF);//Blue
sbDisplay.setLed(3,0XFFFF00);//Yellow
sbDisplay.setLed(4,0X00FFFF); //Cyan?
sbDisplay.setLed(5,0XFF00FF); // Purple*/
sbDisplay.setLed(0,0XFFFFFF);//White
sbDisplay.setLed(1,0XFFFFFF);//
sbDisplay.setLed(2,0XFFFFFF);//
sbDisplay.setLed(3,0XFFFFFF);//
sbDisplay.setLed(4,0XFFFFFF); //
sbDisplay.setLed(5,0XFFFFFF); //
sbDisplay.setCurrentCorr(0,0,0);//suggested default value cor current control regs. Values g&b=100, r=120
sbDisplay.displayFrame();//force an update
wait(2);
sbDisplay.setCurrentCorr(127,127,127);//This should be MAX
wait(2);
sbDisplay.setCurrentCorr(0x78,0x64,0x64);//sb suggested default
wait(2);
PC.printf("Hallo (size=%d)\r\n", sizeof(unsigned long int));
//Setup the framerate and update the display
//I chose standard 24fps
t.attach_us(&sbDisplay,&shiftBriteDisplay::displayFrame,41666);//call updateFrame 24 times per second (every 41666uS)
//t.attach(&sbDisplay,&shiftBriteDisplay::displayFrame,0.5);//Only every 0.5s for testing
while(1){
/*TEST THE CURRENT ADJUSMENT FUNCTIONALITY
sbDisplay.setCurrentCorr(0,0,0);
wait(0.5);
sbDisplay.setCurrentCorr(30,30,30);
wait(0.5);
sbDisplay.setCurrentCorr(60,60,60);
wait(0.5);
sbDisplay.setCurrentCorr(90,90,30);
wait(0.5);
sbDisplay.setCurrentCorr(120,120,30);
wait(0.5);
*/
sbDisplay.setLed(0,0XFF0000);//Red
sbDisplay.setLed(1,0X00FF00);//Green
sbDisplay.setLed(2,0X0000FF);//Blue
sbDisplay.setLed(3,0XFFFF00);//Yellow
sbDisplay.setLed(4,0X00FFFF); //Cyan?
sbDisplay.setLed(5,0XFF00FF); // Purple
wait(0.5);
sbDisplay.setLed(5,0XFF0000);//Red
sbDisplay.setLed(4,0X00FF00);//Green
sbDisplay.setLed(3,0X0000FF);//Blue
sbDisplay.setLed(2,0XFFFF00);//Yellow
sbDisplay.setLed(1,0X00FFFF); //Cyan?
sbDisplay.setLed(0,0XFF00FF); // Purple
wait(0.5);
}
}