Cheerlights client using WiFiDIPCortex and WS2801 RGB LED strip
Dependencies: Adafruit_WS2801 HTTPClient cc3000_hostdriver_mbedsocket mbed
Revision 1:40027344b249, committed 2014-02-12
- Comitter:
- SomeRandomBloke
- Date:
- Wed Feb 12 22:18:52 2014 +0000
- Parent:
- 0:98d83f5b309f
- Child:
- 2:8de3eccd527e
- Commit message:
- updates to use hardware SPI and checking for last colour set
Changed in this revision
| Adafruit_WS2801.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/Adafruit_WS2801.lib Tue Feb 11 21:30:21 2014 +0000 +++ b/Adafruit_WS2801.lib Wed Feb 12 22:18:52 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/SomeRandomBloke/code/Adafruit_WS2801/#6ff477690983 +http://mbed.org/users/SomeRandomBloke/code/Adafruit_WS2801/#2fdaa13896a4
--- a/main.cpp Tue Feb 11 21:30:21 2014 +0000
+++ b/main.cpp Wed Feb 12 22:18:52 2014 +0000
@@ -85,8 +85,11 @@
//
DigitalIn SCButton(P1_31);
-PinName dataPin(P1_28); // Yellow wire on Adafruit Pixels
-PinName clockPin(P0_7); // Green wire on Adafruit Pixels
+// For Bit-Banging SPI use Pins 40 and 39
+PinName dataPin(p40); // PIN 40 - Yellow wire on Adafruit Pixels
+PinName clockPin(p39); // PIN 39 - Green wire on Adafruit Pixels
+
+// For hardware SPI use Pin 16 for Data and pin 13 for Clk
/* cc3000 module declaration specific for user's board. Check also init() */
#if (MY_BOARD == WIGO)
@@ -117,7 +120,7 @@
uint32_t lastColour = 0;
// Set the first variable to the number of rows, the second to number of pixels. 32 = 32 pixels in a row
-Adafruit_WS2801 strip = Adafruit_WS2801(1,32, dataPin, clockPin);
+Adafruit_WS2801 strip = Adafruit_WS2801(32, dataPin, clockPin);
// Setup the colour table and mappings
#define NUM_COLOURS 12
@@ -125,16 +128,16 @@
char name[12];
uint32_t value;
} colTable[NUM_COLOURS] = {
- { "red", 0xFF0000 },
+ { "red", 0xff0000 },
{ "green", 0x008000 },
- { "blue", 0x0000FF },
- { "cyan", 0x00FFFF },
- { "white", 0xFFFFFF },
- { "warmwhite", 0xFDF5E6 },
+ { "blue", 0x0000ff },
+ { "cyan", 0x00ffff },
+ { "white", 0xffffff },
+ { "warmwhite", 0xfdf5e6 },
{ "purple", 0x800080 },
- { "magenta", 0xFF00FF },
- { "yellow", 0xFFFF00 },
- { "orange", 0xFFA500 },
+ { "magenta", 0xff00ff },
+ { "yellow", 0xffff00 },
+ { "orange", 0xffa500 },
{ "pink", 0xff69b4 },
{ "oldlace", 0xfd5e56 }
};
@@ -207,10 +210,15 @@
for( int i=0; i < NUM_COLOURS; i++ ) {
if( strncmp( colTable[i].name, colStr, strlen(colTable[i].name) ) == 0 ) {
- for (int n=0; n < strip.numPixels(); n++) {
- strip.setPixelColor(n, colTable[i].value);
- strip.show();
- wait_ms(50);
+ if( colTable[i].value != lastColour ) {
+ for (int n=0; n < strip.numPixels(); n++) {
+ strip.setPixelColor(n, colTable[i].value);
+ strip.show();
+ wait_ms(100);
+ }
+ lastColour = colTable[i].value;
+ } else {
+ uart.printf("Same as previous colour\r\n");
}
return;
}
@@ -228,6 +236,8 @@
//GET data
uart.printf("\r\nTrying to fetch page...\r\n");
int ret = http.get("http://api.thingspeak.com/channels/1417/field/1/last.txt", str, 128);
+ // Just a local test url, saves having to tweet the cheerlights colour every time
+// int ret = http.get("http://192.168.1.3/last.txt", str, 128);
if (!ret) {
uart.printf("Page fetched successfully - read %d characters\r\n", strlen(str));
uart.printf("Result: %s\r\n", str);
@@ -256,6 +266,8 @@
LPC_SYSCON->SYSAHBCLKCTRL |= (0x1 << 26);
uart.baud(SERIAL_BAUD_RATE);
+
+ strip.updatePins(); // Switch to Hardware SPI
strip.begin();