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

Committer:
dminear
Date:
Wed Mar 09 05:09:42 2011 +0000
Revision:
0:74139f5b6180
Initial release

Who changed what in which revision?

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