This is the end gate portion of a pinewood derby timer that uses an mbed. It communicates via HTTP to a web server that is doing the racer control and race management. Still need to put all that code together into a package on the net.
Dependencies: EthernetNetIf mbed HTTPServer Servo
blinkm.cpp@0:74139f5b6180, 2011-03-09 (annotated)
- Committer:
- dminear
- Date:
- Wed Mar 09 05:09:42 2011 +0000
- Revision:
- 0:74139f5b6180
Initial release
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dminear | 0:74139f5b6180 | 1 | #include "mbed.h" |
dminear | 0:74139f5b6180 | 2 | #include "Servo.h" |
dminear | 0:74139f5b6180 | 3 | #include "share.h" |
dminear | 0:74139f5b6180 | 4 | |
dminear | 0:74139f5b6180 | 5 | //Serial pc(USBTX, USBRX); // tx, rx |
dminear | 0:74139f5b6180 | 6 | |
dminear | 0:74139f5b6180 | 7 | //prototypes |
dminear | 0:74139f5b6180 | 8 | void FadeToColor(char r,char g, char b); |
dminear | 0:74139f5b6180 | 9 | void FastColorChg(char r,char g, char b); |
dminear | 0:74139f5b6180 | 10 | void PlayScript(char s); |
dminear | 0:74139f5b6180 | 11 | void BlinkInit(void); |
dminear | 0:74139f5b6180 | 12 | //DEFINES |
dminear | 0:74139f5b6180 | 13 | #define BLINKADR 0x12 |
dminear | 0:74139f5b6180 | 14 | |
dminear | 0:74139f5b6180 | 15 | //I2C blink(p9,p10); |
dminear | 0:74139f5b6180 | 16 | I2C blink(p28,p27); |
dminear | 0:74139f5b6180 | 17 | |
dminear | 0:74139f5b6180 | 18 | #ifdef test |
dminear | 0:74139f5b6180 | 19 | |
dminear | 0:74139f5b6180 | 20 | int main() { |
dminear | 0:74139f5b6180 | 21 | BlinkInit(); |
dminear | 0:74139f5b6180 | 22 | FadeToColor(0x00,0x00,0x00); |
dminear | 0:74139f5b6180 | 23 | wait(2); |
dminear | 0:74139f5b6180 | 24 | FadeToColor(0xff,0xff,0xff); |
dminear | 0:74139f5b6180 | 25 | wait(2); |
dminear | 0:74139f5b6180 | 26 | int i = 0; |
dminear | 0:74139f5b6180 | 27 | while(1) { |
dminear | 0:74139f5b6180 | 28 | |
dminear | 0:74139f5b6180 | 29 | for(i = 0; i < 18; i++) { |
dminear | 0:74139f5b6180 | 30 | //pc.printf("script %d\n\r", i ); |
dminear | 0:74139f5b6180 | 31 | PlayScript(i); //virtual candle |
dminear | 0:74139f5b6180 | 32 | wait(60); // 10 sec script play |
dminear | 0:74139f5b6180 | 33 | } |
dminear | 0:74139f5b6180 | 34 | } |
dminear | 0:74139f5b6180 | 35 | } |
dminear | 0:74139f5b6180 | 36 | #endif |
dminear | 0:74139f5b6180 | 37 | |
dminear | 0:74139f5b6180 | 38 | void BlinkInit(void) |
dminear | 0:74139f5b6180 | 39 | { |
dminear | 0:74139f5b6180 | 40 | char data[1] = {'o'}; |
dminear | 0:74139f5b6180 | 41 | blink.frequency(100000); |
dminear | 0:74139f5b6180 | 42 | blink.write(0x00, data, 1); // will stop it at whatever address |
dminear | 0:74139f5b6180 | 43 | } |
dminear | 0:74139f5b6180 | 44 | void FadeToColor(char r,char g, char b) |
dminear | 0:74139f5b6180 | 45 | { |
dminear | 0:74139f5b6180 | 46 | char data[4] = {'c',r,g,b}; |
dminear | 0:74139f5b6180 | 47 | blink.write(BLINKADR, data, 4); |
dminear | 0:74139f5b6180 | 48 | } |
dminear | 0:74139f5b6180 | 49 | void FastColorChg(char r,char g, char b) |
dminear | 0:74139f5b6180 | 50 | { |
dminear | 0:74139f5b6180 | 51 | char data[4] = {'n',r,g,b}; |
dminear | 0:74139f5b6180 | 52 | blink.write(BLINKADR, data, 4); |
dminear | 0:74139f5b6180 | 53 | } |
dminear | 0:74139f5b6180 | 54 | void PlayScript(char s) |
dminear | 0:74139f5b6180 | 55 | { |
dminear | 0:74139f5b6180 | 56 | FadeToColor(0x00,0x00,0x00); // fade to black |
dminear | 0:74139f5b6180 | 57 | wait(0.25); //100 ms to make sure fade is complete |
dminear | 0:74139f5b6180 | 58 | if(s < 19) //only 19 scripts onboard |
dminear | 0:74139f5b6180 | 59 | { |
dminear | 0:74139f5b6180 | 60 | char data[4] = {'p',s,0,0}; //play script from start indefinetly |
dminear | 0:74139f5b6180 | 61 | blink.write(BLINKADR, data, 4); |
dminear | 0:74139f5b6180 | 62 | } |
dminear | 0:74139f5b6180 | 63 | } |
dminear | 0:74139f5b6180 | 64 | |
dminear | 0:74139f5b6180 | 65 | void FadeToRandomColor(void) { |
dminear | 0:74139f5b6180 | 66 | char data[4] = {'C',0xff,0xff,0xff}; |
dminear | 0:74139f5b6180 | 67 | |
dminear | 0:74139f5b6180 | 68 | blink.write(BLINKADR, data, 4); // Send command string |
dminear | 0:74139f5b6180 | 69 | wait(0.07); // Could also poll, 65ms is typical |
dminear | 0:74139f5b6180 | 70 | } |