A lampost demo program - it takes in SMS commands to control a light using the shiftbrite LED.
Dependencies: VodafoneUSBModem_bleedingedge mbed-rtos mbed
Fork of 3GShiftBrite by
Diff: main.cpp
- Revision:
- 1:662b59c2ce3a
- Parent:
- 0:9a2bd692bc95
--- a/main.cpp Fri Sep 28 09:27:18 2012 +0000 +++ b/main.cpp Mon Nov 19 17:34:14 2012 +0000 @@ -35,6 +35,38 @@ latch=0; } +void doRainbow() { + for(int r=0; r<500; r++) { + for(int g=0; g<500; g++) { + for(int b=0; b<500; b++) { + setLEDColor(r,g,b); + } + } + } + setLEDColor(500,500,500); + Thread::wait(1000); + setLEDColor(0,0,0); +} + +void doFlash() { + int interval = 100; + for(int i=0; i<5; i++) { + setLEDColor(500,0,0); + Thread::wait(interval); + setLEDColor(0,0,0); + Thread::wait(interval); + setLEDColor(500,500,500); + Thread::wait(interval); + setLEDColor(0,0,0); + Thread::wait(interval); + setLEDColor(0,0,500); + Thread::wait(interval); + setLEDColor(0,0,0); + Thread::wait(interval); + } + setLEDColor(500,0,0); +} + void lightListener(void const*) { VodafoneUSBModem modem; @@ -47,7 +79,7 @@ int urlBufferLength = 128; // declare space for phone number and message storage - char numBuffer[20], msgBuffer[512]; + char numBuffer[20], msgBuffer[256]; size_t numSMS; // variable to track number of received messages //int ret = modem.connect("internet","web","web"); @@ -70,9 +102,61 @@ DBG("SM count > 0"); // get the oldest short message in the queue if(modem.getSM(numBuffer,msgBuffer,256)==OK) { - sscanf(msgBuffer,"%d,%d,%d",&r,&g,&b); + if(strcmp(msgBuffer,"flash")==0) { + doFlash(); + continue; + } else if(strcmp(msgBuffer,"rainbow")==0) { + doRainbow(); + continue; + } else if(strcmp(msgBuffer,"red")==0) { + setLEDColor(1000,0,0); + continue; + } else if(strcmp(msgBuffer,"green")==0) { + setLEDColor(0,1000,0); + continue; + } else if(strcmp(msgBuffer,"blue")==0) { + setLEDColor(0,0,1000); + continue; + } else if(strcmp(msgBuffer,"purple")==0) { + setLEDColor(1000,0,1000); + continue; + } else if(strcmp(msgBuffer,"off")==0) { + setLEDColor(0,0,0); + continue; + } + + if(sscanf(msgBuffer,"%d,%d,%d",&r,&g,&b)!=3) { + continue; + } DBG("Setting light to: %d,%d,%d",r,g,b); - setLEDColor(r*4,g*4,b*4); + + if(r<256) { + r *= 4; + } + + if(g<256) { + g *= 4; + } + + if(b<256) { + b *= 4; + } + + if(r>1023) { + r = 1023; + } + + if(g>1023) { + g = 1023; + } + + if(b>1023) { + b = 1023; + } + + setLEDColor(r,g,b); + + // connect to socket and push message /* // create the socket @@ -124,8 +208,8 @@ } - modem.disconnect(); - DBG("Disconnected"); + //modem.disconnect(); + //DBG("Disconnected"); while (1) { Thread::wait(100); @@ -137,7 +221,7 @@ led1 = !led1; Thread::wait(250); led1 = !led1; - Thread::wait(25000); + Thread::wait(750); } }