SHOHEI FUJIMOTO
/
LineLedControl
LineLedControl
Fork of LPD8806_Test by
main.cpp@3:b0a1b4b24d3c, 2013-08-19 (annotated)
- Committer:
- sfjmt
- Date:
- Mon Aug 19 12:14:37 2013 +0000
- Revision:
- 3:b0a1b4b24d3c
- Parent:
- 2:c9d9fa02a4e4
LPD8806 control
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ehbmbed2 | 2:c9d9fa02a4e4 | 1 | // standard connected to 1st hardware SPI |
ehbmbed2 | 2:c9d9fa02a4e4 | 2 | // LPD8806 <> MBED |
sfjmt | 3:b0a1b4b24d3c | 3 | // DATA -> P5( mosi ) or P11( mosi ) |
sfjmt | 3:b0a1b4b24d3c | 4 | // CLOCK -> p7( sclk ) or p13( sclk ) |
ehbmbed2 | 1:c70352e536c0 | 5 | /*****************************************************************************/ |
sfjmt | 3:b0a1b4b24d3c | 6 | #include "mbed.h" |
sfjmt | 3:b0a1b4b24d3c | 7 | #include "mbedOSC.h" |
ehbmbed2 | 1:c70352e536c0 | 8 | #include "LPD8806.h" |
ehbmbed2 | 1:c70352e536c0 | 9 | |
sfjmt | 3:b0a1b4b24d3c | 10 | extern "C" void mbed_reset(); |
sfjmt | 3:b0a1b4b24d3c | 11 | |
sfjmt | 3:b0a1b4b24d3c | 12 | //OSC setup---------------------------------------------------------------------- |
sfjmt | 3:b0a1b4b24d3c | 13 | // mbed IP address (server): |
sfjmt | 3:b0a1b4b24d3c | 14 | //#ifdef DHCP |
sfjmt | 3:b0a1b4b24d3c | 15 | //EthernetNetIf eth; |
sfjmt | 3:b0a1b4b24d3c | 16 | //#else |
sfjmt | 3:b0a1b4b24d3c | 17 | EthernetNetIf eth( |
sfjmt | 3:b0a1b4b24d3c | 18 | IpAddr(192,168,12,210),//my mbed IP Address |
sfjmt | 3:b0a1b4b24d3c | 19 | IpAddr(255,255,255,0),//Network Mask |
sfjmt | 3:b0a1b4b24d3c | 20 | IpAddr(),//Gateway |
sfjmt | 3:b0a1b4b24d3c | 21 | IpAddr()//DNS |
sfjmt | 3:b0a1b4b24d3c | 22 | ); |
sfjmt | 3:b0a1b4b24d3c | 23 | //#endif |
sfjmt | 3:b0a1b4b24d3c | 24 | |
sfjmt | 3:b0a1b4b24d3c | 25 | //receive |
sfjmt | 3:b0a1b4b24d3c | 26 | uint8_t receiveIp[] = { 192, 168, 12, 210 };//IP Address |
sfjmt | 3:b0a1b4b24d3c | 27 | int receivePort = 5678;//port |
sfjmt | 3:b0a1b4b24d3c | 28 | |
sfjmt | 3:b0a1b4b24d3c | 29 | //destination. |
sfjmt | 3:b0a1b4b24d3c | 30 | uint8_t destIp[] = { 192, 168, 12, 51};//IP Address |
sfjmt | 3:b0a1b4b24d3c | 31 | int destPort = 10000;//port |
sfjmt | 3:b0a1b4b24d3c | 32 | |
sfjmt | 3:b0a1b4b24d3c | 33 | //send value propaty. |
sfjmt | 3:b0a1b4b24d3c | 34 | char *topAddress = "/hangers"; |
sfjmt | 3:b0a1b4b24d3c | 35 | char *subAddress[3] = {"/line1","/line2","/line3"}; |
sfjmt | 3:b0a1b4b24d3c | 36 | |
sfjmt | 3:b0a1b4b24d3c | 37 | //receive value propaty |
sfjmt | 3:b0a1b4b24d3c | 38 | char *requestStr = "hangers"; |
sfjmt | 3:b0a1b4b24d3c | 39 | char *requestTopStr[3] = {"mbed1","mbed2","mbed3"}; |
sfjmt | 3:b0a1b4b24d3c | 40 | char *requestSubStr[3] = {"test1","test2","test3"}; |
sfjmt | 3:b0a1b4b24d3c | 41 | int requestNumber[10] = {101,102,103,104,105,106,107,108,109,110}; |
sfjmt | 3:b0a1b4b24d3c | 42 | const int resetNumber = 777; |
sfjmt | 3:b0a1b4b24d3c | 43 | |
sfjmt | 3:b0a1b4b24d3c | 44 | //instance |
sfjmt | 3:b0a1b4b24d3c | 45 | OSCMessage recMes; |
sfjmt | 3:b0a1b4b24d3c | 46 | OSCMessage sendMes; |
sfjmt | 3:b0a1b4b24d3c | 47 | OSCClass osc; |
sfjmt | 3:b0a1b4b24d3c | 48 | |
sfjmt | 3:b0a1b4b24d3c | 49 | //digital pin |
sfjmt | 3:b0a1b4b24d3c | 50 | DigitalOut csPin1(p8); |
sfjmt | 3:b0a1b4b24d3c | 51 | DigitalOut csPin2(p9); |
sfjmt | 3:b0a1b4b24d3c | 52 | DigitalOut csPin3(p10); |
sfjmt | 3:b0a1b4b24d3c | 53 | DigitalOut csPin4(p21); |
sfjmt | 3:b0a1b4b24d3c | 54 | DigitalOut csPin5(p22); |
sfjmt | 3:b0a1b4b24d3c | 55 | DigitalOut csPin6(p23); |
sfjmt | 3:b0a1b4b24d3c | 56 | DigitalOut csPin7(p24); |
sfjmt | 3:b0a1b4b24d3c | 57 | DigitalOut csPin8(p25); |
sfjmt | 3:b0a1b4b24d3c | 58 | DigitalOut csPin9(p26); |
sfjmt | 3:b0a1b4b24d3c | 59 | DigitalOut led(LED1); |
sfjmt | 3:b0a1b4b24d3c | 60 | |
sfjmt | 3:b0a1b4b24d3c | 61 | //mode |
sfjmt | 3:b0a1b4b24d3c | 62 | bool sendMode = false; |
sfjmt | 3:b0a1b4b24d3c | 63 | bool receiveMode = true; |
sfjmt | 3:b0a1b4b24d3c | 64 | //---------------------------------------------------------------------- |
sfjmt | 3:b0a1b4b24d3c | 65 | |
sfjmt | 3:b0a1b4b24d3c | 66 | LPD8806 strip = LPD8806(10); |
sfjmt | 3:b0a1b4b24d3c | 67 | |
sfjmt | 3:b0a1b4b24d3c | 68 | //LOW |
sfjmt | 3:b0a1b4b24d3c | 69 | void low() |
sfjmt | 3:b0a1b4b24d3c | 70 | { |
sfjmt | 3:b0a1b4b24d3c | 71 | for (int i=0; i < strip.numPixels(); i++) { |
sfjmt | 3:b0a1b4b24d3c | 72 | strip.setPixelColor(i, 0); // turn all pixels off |
sfjmt | 3:b0a1b4b24d3c | 73 | } |
sfjmt | 3:b0a1b4b24d3c | 74 | strip.show(); |
sfjmt | 3:b0a1b4b24d3c | 75 | |
sfjmt | 3:b0a1b4b24d3c | 76 | printf("low complete."); |
sfjmt | 3:b0a1b4b24d3c | 77 | } |
sfjmt | 3:b0a1b4b24d3c | 78 | |
sfjmt | 3:b0a1b4b24d3c | 79 | //HIGH |
sfjmt | 3:b0a1b4b24d3c | 80 | void high(uint32_t c) |
sfjmt | 3:b0a1b4b24d3c | 81 | { |
sfjmt | 3:b0a1b4b24d3c | 82 | for (int i=0; i < strip.numPixels(); i++) { |
sfjmt | 3:b0a1b4b24d3c | 83 | strip.setPixelColor(i, c); // turn all pixels off |
sfjmt | 3:b0a1b4b24d3c | 84 | } |
sfjmt | 3:b0a1b4b24d3c | 85 | strip.show(); |
sfjmt | 3:b0a1b4b24d3c | 86 | |
sfjmt | 3:b0a1b4b24d3c | 87 | printf("high complete."); |
sfjmt | 3:b0a1b4b24d3c | 88 | } |
sfjmt | 3:b0a1b4b24d3c | 89 | |
sfjmt | 3:b0a1b4b24d3c | 90 | //FADE |
sfjmt | 3:b0a1b4b24d3c | 91 | void fade(uint16_t colorNum,uint8_t delay) |
sfjmt | 3:b0a1b4b24d3c | 92 | { |
sfjmt | 3:b0a1b4b24d3c | 93 | //fade in |
sfjmt | 3:b0a1b4b24d3c | 94 | for(int i = 0; i < colorNum; i++) |
sfjmt | 3:b0a1b4b24d3c | 95 | { |
sfjmt | 3:b0a1b4b24d3c | 96 | for(int j = 0; j < strip.numPixels(); j++) |
sfjmt | 3:b0a1b4b24d3c | 97 | { |
sfjmt | 3:b0a1b4b24d3c | 98 | strip.setPixelColor(j,strip.Color(i,i,i)); |
sfjmt | 3:b0a1b4b24d3c | 99 | } |
sfjmt | 3:b0a1b4b24d3c | 100 | strip.show(); |
sfjmt | 3:b0a1b4b24d3c | 101 | wait_ms(delay); |
sfjmt | 3:b0a1b4b24d3c | 102 | } |
sfjmt | 3:b0a1b4b24d3c | 103 | |
sfjmt | 3:b0a1b4b24d3c | 104 | //fade out |
sfjmt | 3:b0a1b4b24d3c | 105 | for(int i = colorNum; i > 0; i--) |
sfjmt | 3:b0a1b4b24d3c | 106 | { |
sfjmt | 3:b0a1b4b24d3c | 107 | for(int j = 0; j < strip.numPixels(); j++) |
sfjmt | 3:b0a1b4b24d3c | 108 | { |
sfjmt | 3:b0a1b4b24d3c | 109 | strip.setPixelColor(j,strip.Color(i,i,i)); |
sfjmt | 3:b0a1b4b24d3c | 110 | } |
sfjmt | 3:b0a1b4b24d3c | 111 | strip.show(); |
sfjmt | 3:b0a1b4b24d3c | 112 | wait_ms(delay); |
sfjmt | 3:b0a1b4b24d3c | 113 | } |
sfjmt | 3:b0a1b4b24d3c | 114 | //low |
sfjmt | 3:b0a1b4b24d3c | 115 | low(); |
sfjmt | 3:b0a1b4b24d3c | 116 | |
sfjmt | 3:b0a1b4b24d3c | 117 | printf("fade complete."); |
sfjmt | 3:b0a1b4b24d3c | 118 | } |
ehbmbed2 | 1:c70352e536c0 | 119 | |
ehbmbed2 | 1:c70352e536c0 | 120 | // Chase a dot down the strip |
ehbmbed2 | 1:c70352e536c0 | 121 | // good for testing purposes |
ehbmbed2 | 1:c70352e536c0 | 122 | void colorChase(uint32_t c, uint8_t delay) { |
ehbmbed2 | 1:c70352e536c0 | 123 | int i; |
ehbmbed2 | 1:c70352e536c0 | 124 | |
ehbmbed2 | 1:c70352e536c0 | 125 | for (i=0; i < strip.numPixels(); i++) { |
ehbmbed2 | 1:c70352e536c0 | 126 | strip.setPixelColor(i, 0); // turn all pixels off |
ehbmbed2 | 1:c70352e536c0 | 127 | } |
ehbmbed2 | 1:c70352e536c0 | 128 | |
ehbmbed2 | 1:c70352e536c0 | 129 | for (i=0; i < strip.numPixels(); i++) { |
ehbmbed2 | 1:c70352e536c0 | 130 | strip.setPixelColor(i, c); |
ehbmbed2 | 1:c70352e536c0 | 131 | if (i == 0) { |
ehbmbed2 | 1:c70352e536c0 | 132 | strip.setPixelColor(strip.numPixels()-1, 0); |
ehbmbed2 | 1:c70352e536c0 | 133 | } else { |
ehbmbed2 | 1:c70352e536c0 | 134 | strip.setPixelColor(i-1, 0); |
ehbmbed2 | 1:c70352e536c0 | 135 | } |
ehbmbed2 | 1:c70352e536c0 | 136 | strip.show(); |
ehbmbed2 | 1:c70352e536c0 | 137 | wait_ms(delay); |
ehbmbed2 | 1:c70352e536c0 | 138 | } |
ehbmbed2 | 1:c70352e536c0 | 139 | } |
ehbmbed2 | 1:c70352e536c0 | 140 | |
ehbmbed2 | 1:c70352e536c0 | 141 | // fill the dots one after the other with said color |
ehbmbed2 | 1:c70352e536c0 | 142 | // good for testing purposes |
ehbmbed2 | 1:c70352e536c0 | 143 | void colorWipe(uint32_t c, uint8_t delay) { |
ehbmbed2 | 1:c70352e536c0 | 144 | int i; |
ehbmbed2 | 1:c70352e536c0 | 145 | |
ehbmbed2 | 1:c70352e536c0 | 146 | for (i=0; i < strip.numPixels(); i++) { |
ehbmbed2 | 1:c70352e536c0 | 147 | strip.setPixelColor(i, c); |
ehbmbed2 | 1:c70352e536c0 | 148 | strip.show(); |
ehbmbed2 | 1:c70352e536c0 | 149 | wait_ms(delay); |
ehbmbed2 | 1:c70352e536c0 | 150 | } |
ehbmbed2 | 1:c70352e536c0 | 151 | } |
ehbmbed2 | 1:c70352e536c0 | 152 | |
ehbmbed2 | 1:c70352e536c0 | 153 | //Input a value 0 to 384 to get a color value. |
ehbmbed2 | 1:c70352e536c0 | 154 | //The colours are a transition r - g -b - back to r |
ehbmbed2 | 1:c70352e536c0 | 155 | |
ehbmbed2 | 1:c70352e536c0 | 156 | uint32_t Wheel(uint16_t WheelPos) { |
ehbmbed2 | 1:c70352e536c0 | 157 | uint8_t b=0; |
ehbmbed2 | 1:c70352e536c0 | 158 | uint8_t g=0; |
ehbmbed2 | 1:c70352e536c0 | 159 | uint8_t r = 0; |
ehbmbed2 | 1:c70352e536c0 | 160 | switch (WheelPos / 128) { |
ehbmbed2 | 1:c70352e536c0 | 161 | case 0: |
ehbmbed2 | 1:c70352e536c0 | 162 | r = 127 - WheelPos % 128; //Red down |
ehbmbed2 | 1:c70352e536c0 | 163 | g = WheelPos % 128; // Green up |
ehbmbed2 | 1:c70352e536c0 | 164 | b = 0; //blue off |
ehbmbed2 | 1:c70352e536c0 | 165 | break; |
ehbmbed2 | 1:c70352e536c0 | 166 | case 1: |
ehbmbed2 | 1:c70352e536c0 | 167 | g = 127 - WheelPos % 128; //green down |
ehbmbed2 | 1:c70352e536c0 | 168 | b = WheelPos % 128; //blue up |
ehbmbed2 | 1:c70352e536c0 | 169 | r = 0; //red off |
ehbmbed2 | 1:c70352e536c0 | 170 | break; |
ehbmbed2 | 1:c70352e536c0 | 171 | case 2: |
ehbmbed2 | 1:c70352e536c0 | 172 | b = 127 - WheelPos % 128; //blue down |
ehbmbed2 | 1:c70352e536c0 | 173 | r = WheelPos % 128; //red up |
ehbmbed2 | 1:c70352e536c0 | 174 | g = 0; //green off |
ehbmbed2 | 1:c70352e536c0 | 175 | break; |
ehbmbed2 | 1:c70352e536c0 | 176 | } |
ehbmbed2 | 1:c70352e536c0 | 177 | return(strip.Color(r,g,b)); |
ehbmbed2 | 1:c70352e536c0 | 178 | } |
ehbmbed2 | 1:c70352e536c0 | 179 | |
ehbmbed2 | 1:c70352e536c0 | 180 | void rainbow(uint8_t delay) { |
ehbmbed2 | 1:c70352e536c0 | 181 | int i, j; |
ehbmbed2 | 1:c70352e536c0 | 182 | |
ehbmbed2 | 1:c70352e536c0 | 183 | for (j=0; j < 384; j++) { // 3 cycles of all 384 colors in the wheel |
ehbmbed2 | 1:c70352e536c0 | 184 | for (i=0; i < strip.numPixels(); i++) { |
ehbmbed2 | 1:c70352e536c0 | 185 | strip.setPixelColor(i, Wheel( (i + j) % 384)); |
ehbmbed2 | 1:c70352e536c0 | 186 | } |
ehbmbed2 | 1:c70352e536c0 | 187 | strip.show(); // write all the pixels out |
ehbmbed2 | 1:c70352e536c0 | 188 | wait_ms(delay); |
ehbmbed2 | 1:c70352e536c0 | 189 | } |
ehbmbed2 | 1:c70352e536c0 | 190 | } |
ehbmbed2 | 1:c70352e536c0 | 191 | |
ehbmbed2 | 1:c70352e536c0 | 192 | // Slightly different, this one makes the rainbow wheel equally distributed |
ehbmbed2 | 1:c70352e536c0 | 193 | // along the chain |
ehbmbed2 | 1:c70352e536c0 | 194 | void rainbowCycle(uint8_t delay) { |
ehbmbed2 | 1:c70352e536c0 | 195 | uint16_t i, j; |
ehbmbed2 | 1:c70352e536c0 | 196 | |
ehbmbed2 | 1:c70352e536c0 | 197 | for (j=0; j < 384 * 5; j++) { // 5 cycles of all 384 colors in the wheel |
ehbmbed2 | 1:c70352e536c0 | 198 | for (i=0; i < strip.numPixels(); i++) { |
ehbmbed2 | 1:c70352e536c0 | 199 | // tricky math! we use each pixel as a fraction of the full 384-color wheel |
ehbmbed2 | 1:c70352e536c0 | 200 | // (thats the i / strip.numPixels() part) |
ehbmbed2 | 1:c70352e536c0 | 201 | // Then add in j which makes the colors go around per pixel |
ehbmbed2 | 1:c70352e536c0 | 202 | // the % 384 is to make the wheel cycle around |
ehbmbed2 | 1:c70352e536c0 | 203 | strip.setPixelColor(i, Wheel( ((i * 384 / strip.numPixels()) + j) % 384) ); |
ehbmbed2 | 1:c70352e536c0 | 204 | } |
ehbmbed2 | 1:c70352e536c0 | 205 | strip.show(); // write all the pixels out |
ehbmbed2 | 1:c70352e536c0 | 206 | wait_ms(delay); |
ehbmbed2 | 1:c70352e536c0 | 207 | } |
ehbmbed2 | 1:c70352e536c0 | 208 | } |
ehbmbed2 | 1:c70352e536c0 | 209 | |
ehbmbed2 | 1:c70352e536c0 | 210 | // "Larson scanner" = Cylon/KITT bouncing light effect |
ehbmbed2 | 1:c70352e536c0 | 211 | void scanner(uint8_t r, uint8_t g, uint8_t b, uint8_t delay) { |
ehbmbed2 | 1:c70352e536c0 | 212 | int i, j, pos, dir; |
ehbmbed2 | 1:c70352e536c0 | 213 | |
ehbmbed2 | 1:c70352e536c0 | 214 | pos = 0; |
ehbmbed2 | 1:c70352e536c0 | 215 | dir = 1; |
ehbmbed2 | 1:c70352e536c0 | 216 | |
ehbmbed2 | 1:c70352e536c0 | 217 | for (i=0; i<((strip.numPixels()-1) * 8); i++) { |
ehbmbed2 | 1:c70352e536c0 | 218 | // Draw 5 pixels centered on pos. setPixelColor() will clip |
ehbmbed2 | 1:c70352e536c0 | 219 | // any pixels off the ends of the strip, no worries there. |
ehbmbed2 | 1:c70352e536c0 | 220 | // we'll make the colors dimmer at the edges for a nice pulse |
ehbmbed2 | 1:c70352e536c0 | 221 | // look |
ehbmbed2 | 1:c70352e536c0 | 222 | strip.setPixelColor(pos - 2, strip.Color(r/4, g/4, b/4)); |
ehbmbed2 | 1:c70352e536c0 | 223 | strip.setPixelColor(pos - 1, strip.Color(r/2, g/2, b/2)); |
ehbmbed2 | 1:c70352e536c0 | 224 | strip.setPixelColor(pos, strip.Color(r, g, b)); |
ehbmbed2 | 1:c70352e536c0 | 225 | strip.setPixelColor(pos + 1, strip.Color(r/2, g/2, b/2)); |
ehbmbed2 | 1:c70352e536c0 | 226 | strip.setPixelColor(pos + 2, strip.Color(r/4, g/4, b/4)); |
ehbmbed2 | 1:c70352e536c0 | 227 | |
ehbmbed2 | 1:c70352e536c0 | 228 | strip.show(); |
ehbmbed2 | 1:c70352e536c0 | 229 | wait_ms(delay); |
ehbmbed2 | 1:c70352e536c0 | 230 | // If we wanted to be sneaky we could erase just the tail end |
ehbmbed2 | 1:c70352e536c0 | 231 | // pixel, but it's much easier just to erase the whole thing |
ehbmbed2 | 1:c70352e536c0 | 232 | // and draw a new one next time. |
ehbmbed2 | 1:c70352e536c0 | 233 | for (j=-2; j<= 2; j++) |
ehbmbed2 | 1:c70352e536c0 | 234 | strip.setPixelColor(pos+j, strip.Color(0,0,0)); |
ehbmbed2 | 1:c70352e536c0 | 235 | // Bounce off ends of strip |
ehbmbed2 | 1:c70352e536c0 | 236 | pos += dir; |
ehbmbed2 | 1:c70352e536c0 | 237 | if (pos < 0) { |
ehbmbed2 | 1:c70352e536c0 | 238 | pos = 1; |
ehbmbed2 | 1:c70352e536c0 | 239 | dir = -dir; |
ehbmbed2 | 1:c70352e536c0 | 240 | } else if (pos >= strip.numPixels()) { |
ehbmbed2 | 1:c70352e536c0 | 241 | pos = strip.numPixels() - 2; |
ehbmbed2 | 1:c70352e536c0 | 242 | dir = -dir; |
ehbmbed2 | 1:c70352e536c0 | 243 | } |
ehbmbed2 | 1:c70352e536c0 | 244 | } |
ehbmbed2 | 1:c70352e536c0 | 245 | } |
ehbmbed2 | 1:c70352e536c0 | 246 | |
sfjmt | 3:b0a1b4b24d3c | 247 | void processOSC(UDPSocketEvent e); |
sfjmt | 3:b0a1b4b24d3c | 248 | |
sfjmt | 3:b0a1b4b24d3c | 249 | //osc callback function |
sfjmt | 3:b0a1b4b24d3c | 250 | void processOSC(UDPSocketEvent e) |
sfjmt | 3:b0a1b4b24d3c | 251 | { |
sfjmt | 3:b0a1b4b24d3c | 252 | osc.onUDPSocketEvent(e); |
sfjmt | 3:b0a1b4b24d3c | 253 | |
sfjmt | 3:b0a1b4b24d3c | 254 | printf("new message!!"); |
sfjmt | 3:b0a1b4b24d3c | 255 | |
sfjmt | 3:b0a1b4b24d3c | 256 | if (osc.newMessage) |
sfjmt | 3:b0a1b4b24d3c | 257 | { |
sfjmt | 3:b0a1b4b24d3c | 258 | // osc.newMessage = false; // note: if using: message = osc.getMessage(), then we don't need to do this explicitly. |
sfjmt | 3:b0a1b4b24d3c | 259 | |
sfjmt | 3:b0a1b4b24d3c | 260 | if(strcmp(recMes.getAddress(0),requestStr)==0) |
sfjmt | 3:b0a1b4b24d3c | 261 | { |
sfjmt | 3:b0a1b4b24d3c | 262 | int val = recMes.getArgInt(0); |
sfjmt | 3:b0a1b4b24d3c | 263 | |
sfjmt | 3:b0a1b4b24d3c | 264 | switch(val) |
sfjmt | 3:b0a1b4b24d3c | 265 | { |
sfjmt | 3:b0a1b4b24d3c | 266 | case 101: |
sfjmt | 3:b0a1b4b24d3c | 267 | //action |
sfjmt | 3:b0a1b4b24d3c | 268 | // led = 1; |
sfjmt | 3:b0a1b4b24d3c | 269 | // wait(0.2); |
sfjmt | 3:b0a1b4b24d3c | 270 | // led = 0;//led LOW |
sfjmt | 3:b0a1b4b24d3c | 271 | // wait(0.2); |
sfjmt | 3:b0a1b4b24d3c | 272 | |
sfjmt | 3:b0a1b4b24d3c | 273 | printf("\n"); |
sfjmt | 3:b0a1b4b24d3c | 274 | printf("receive ... 101\n"); |
sfjmt | 3:b0a1b4b24d3c | 275 | printf("\n"); |
sfjmt | 3:b0a1b4b24d3c | 276 | |
sfjmt | 3:b0a1b4b24d3c | 277 | // fade(127,2); |
sfjmt | 3:b0a1b4b24d3c | 278 | high(strip.Color(127,127,127)); |
sfjmt | 3:b0a1b4b24d3c | 279 | wait(1.0); |
sfjmt | 3:b0a1b4b24d3c | 280 | low(); |
sfjmt | 3:b0a1b4b24d3c | 281 | wait(1.0); |
sfjmt | 3:b0a1b4b24d3c | 282 | |
sfjmt | 3:b0a1b4b24d3c | 283 | printf("101 ... complete.\n"); |
sfjmt | 3:b0a1b4b24d3c | 284 | break; |
sfjmt | 3:b0a1b4b24d3c | 285 | case 102: |
sfjmt | 3:b0a1b4b24d3c | 286 | |
sfjmt | 3:b0a1b4b24d3c | 287 | printf("\n"); |
sfjmt | 3:b0a1b4b24d3c | 288 | printf("receive ... 102\n"); |
sfjmt | 3:b0a1b4b24d3c | 289 | printf("\n"); |
sfjmt | 3:b0a1b4b24d3c | 290 | |
sfjmt | 3:b0a1b4b24d3c | 291 | //action |
sfjmt | 3:b0a1b4b24d3c | 292 | led = 1; |
sfjmt | 3:b0a1b4b24d3c | 293 | wait(0.2); |
sfjmt | 3:b0a1b4b24d3c | 294 | led = 0;//led LOW |
sfjmt | 3:b0a1b4b24d3c | 295 | wait(0.2); |
sfjmt | 3:b0a1b4b24d3c | 296 | led = 1; |
sfjmt | 3:b0a1b4b24d3c | 297 | wait(0.2); |
sfjmt | 3:b0a1b4b24d3c | 298 | led = 0;//led LOW |
sfjmt | 3:b0a1b4b24d3c | 299 | wait(0.2); |
sfjmt | 3:b0a1b4b24d3c | 300 | |
sfjmt | 3:b0a1b4b24d3c | 301 | printf("102 ... complete.\n"); |
sfjmt | 3:b0a1b4b24d3c | 302 | break; |
sfjmt | 3:b0a1b4b24d3c | 303 | case 103: |
sfjmt | 3:b0a1b4b24d3c | 304 | |
sfjmt | 3:b0a1b4b24d3c | 305 | printf("\n"); |
sfjmt | 3:b0a1b4b24d3c | 306 | printf("receive ... 103\n"); |
sfjmt | 3:b0a1b4b24d3c | 307 | printf("\n"); |
sfjmt | 3:b0a1b4b24d3c | 308 | |
sfjmt | 3:b0a1b4b24d3c | 309 | //action |
sfjmt | 3:b0a1b4b24d3c | 310 | led = 1; |
sfjmt | 3:b0a1b4b24d3c | 311 | wait(1.0); |
sfjmt | 3:b0a1b4b24d3c | 312 | led = 0;//led LOW |
sfjmt | 3:b0a1b4b24d3c | 313 | wait(1.0); |
sfjmt | 3:b0a1b4b24d3c | 314 | led = 1; |
sfjmt | 3:b0a1b4b24d3c | 315 | wait(1.0); |
sfjmt | 3:b0a1b4b24d3c | 316 | led = 0;//led LOW |
sfjmt | 3:b0a1b4b24d3c | 317 | wait(1.0); |
sfjmt | 3:b0a1b4b24d3c | 318 | led = 1; |
sfjmt | 3:b0a1b4b24d3c | 319 | wait(1.0); |
sfjmt | 3:b0a1b4b24d3c | 320 | led = 0;//led LOW |
sfjmt | 3:b0a1b4b24d3c | 321 | wait(1.0); |
sfjmt | 3:b0a1b4b24d3c | 322 | printf("103 ... complete.\n"); |
sfjmt | 3:b0a1b4b24d3c | 323 | break; |
sfjmt | 3:b0a1b4b24d3c | 324 | case 104: |
sfjmt | 3:b0a1b4b24d3c | 325 | //action |
sfjmt | 3:b0a1b4b24d3c | 326 | break; |
sfjmt | 3:b0a1b4b24d3c | 327 | case 105: |
sfjmt | 3:b0a1b4b24d3c | 328 | //action |
sfjmt | 3:b0a1b4b24d3c | 329 | break; |
sfjmt | 3:b0a1b4b24d3c | 330 | case 106: |
sfjmt | 3:b0a1b4b24d3c | 331 | //action |
sfjmt | 3:b0a1b4b24d3c | 332 | break; |
sfjmt | 3:b0a1b4b24d3c | 333 | case 107: |
sfjmt | 3:b0a1b4b24d3c | 334 | //action |
sfjmt | 3:b0a1b4b24d3c | 335 | break; |
sfjmt | 3:b0a1b4b24d3c | 336 | case 108: |
sfjmt | 3:b0a1b4b24d3c | 337 | //action |
sfjmt | 3:b0a1b4b24d3c | 338 | break; |
sfjmt | 3:b0a1b4b24d3c | 339 | case 109: |
sfjmt | 3:b0a1b4b24d3c | 340 | //action |
sfjmt | 3:b0a1b4b24d3c | 341 | break; |
sfjmt | 3:b0a1b4b24d3c | 342 | case resetNumber://reset |
sfjmt | 3:b0a1b4b24d3c | 343 | mbed_reset(); |
sfjmt | 3:b0a1b4b24d3c | 344 | break; |
sfjmt | 3:b0a1b4b24d3c | 345 | default: |
sfjmt | 3:b0a1b4b24d3c | 346 | break; |
sfjmt | 3:b0a1b4b24d3c | 347 | } |
sfjmt | 3:b0a1b4b24d3c | 348 | } |
sfjmt | 3:b0a1b4b24d3c | 349 | } |
sfjmt | 3:b0a1b4b24d3c | 350 | } |
sfjmt | 3:b0a1b4b24d3c | 351 | |
sfjmt | 3:b0a1b4b24d3c | 352 | void pinStatusChange(int st1=0,int st2=0,int st3=0,int st4=0,int st5=0,int st6=0,int st7=0,int st8=0) |
sfjmt | 3:b0a1b4b24d3c | 353 | { |
sfjmt | 3:b0a1b4b24d3c | 354 | csPin1 = st1; |
sfjmt | 3:b0a1b4b24d3c | 355 | csPin2 = st2; |
sfjmt | 3:b0a1b4b24d3c | 356 | csPin3 = st3; |
sfjmt | 3:b0a1b4b24d3c | 357 | csPin4 = st4; |
sfjmt | 3:b0a1b4b24d3c | 358 | csPin5 = st5; |
sfjmt | 3:b0a1b4b24d3c | 359 | csPin6 = st6; |
sfjmt | 3:b0a1b4b24d3c | 360 | csPin7 = st7; |
sfjmt | 3:b0a1b4b24d3c | 361 | csPin8 = st8; |
sfjmt | 3:b0a1b4b24d3c | 362 | } |
sfjmt | 3:b0a1b4b24d3c | 363 | |
sfjmt | 3:b0a1b4b24d3c | 364 | int main(void) |
sfjmt | 3:b0a1b4b24d3c | 365 | { |
sfjmt | 3:b0a1b4b24d3c | 366 | //chip select pin setup |
sfjmt | 3:b0a1b4b24d3c | 367 | csPin1 = 1; |
sfjmt | 3:b0a1b4b24d3c | 368 | csPin2 = 1; |
sfjmt | 3:b0a1b4b24d3c | 369 | csPin3 = 1; |
sfjmt | 3:b0a1b4b24d3c | 370 | csPin4 = 1; |
sfjmt | 3:b0a1b4b24d3c | 371 | csPin5 = 1; |
sfjmt | 3:b0a1b4b24d3c | 372 | csPin6 = 1; |
sfjmt | 3:b0a1b4b24d3c | 373 | csPin7 = 1; |
sfjmt | 3:b0a1b4b24d3c | 374 | csPin8 = 1; |
sfjmt | 3:b0a1b4b24d3c | 375 | csPin9 = 1; |
ehbmbed2 | 1:c70352e536c0 | 376 | |
ehbmbed2 | 1:c70352e536c0 | 377 | // Start up the LED strip |
ehbmbed2 | 1:c70352e536c0 | 378 | strip.begin(); |
ehbmbed2 | 1:c70352e536c0 | 379 | |
ehbmbed2 | 1:c70352e536c0 | 380 | // Update the strip, to start they are all 'off' |
ehbmbed2 | 1:c70352e536c0 | 381 | strip.show(); |
sfjmt | 3:b0a1b4b24d3c | 382 | |
sfjmt | 3:b0a1b4b24d3c | 383 | // Set the Ethernet port: |
sfjmt | 3:b0a1b4b24d3c | 384 | EthernetErr ethErr = eth.setup(); |
sfjmt | 3:b0a1b4b24d3c | 385 | if(ethErr) |
sfjmt | 3:b0a1b4b24d3c | 386 | { |
sfjmt | 3:b0a1b4b24d3c | 387 | //error |
sfjmt | 3:b0a1b4b24d3c | 388 | return -1; |
sfjmt | 3:b0a1b4b24d3c | 389 | } |
ehbmbed2 | 1:c70352e536c0 | 390 | |
sfjmt | 3:b0a1b4b24d3c | 391 | |
sfjmt | 3:b0a1b4b24d3c | 392 | //(1) Sending message >>> |
sfjmt | 3:b0a1b4b24d3c | 393 | // Set IP and Port: |
sfjmt | 3:b0a1b4b24d3c | 394 | if(sendMode) |
sfjmt | 3:b0a1b4b24d3c | 395 | { |
sfjmt | 3:b0a1b4b24d3c | 396 | sendMes.setIp( destIp ); |
sfjmt | 3:b0a1b4b24d3c | 397 | sendMes.setPort( destPort ); |
sfjmt | 3:b0a1b4b24d3c | 398 | } |
ehbmbed2 | 1:c70352e536c0 | 399 | |
sfjmt | 3:b0a1b4b24d3c | 400 | //(2) Receiving <<< |
sfjmt | 3:b0a1b4b24d3c | 401 | if(receiveMode) |
sfjmt | 3:b0a1b4b24d3c | 402 | { |
sfjmt | 3:b0a1b4b24d3c | 403 | recMes.setIp(receiveIp); |
sfjmt | 3:b0a1b4b24d3c | 404 | osc.setReceiveMessage(&recMes); // this sets the receiver container for the OSC packets (we can avoid doing this if we use osc.getMessage() to get messages) |
sfjmt | 3:b0a1b4b24d3c | 405 | osc.begin(receivePort, &processOSC); // binds the upd (osc) messages to an arbitrary listening port ("server" port), and callback function |
sfjmt | 3:b0a1b4b24d3c | 406 | } |
sfjmt | 3:b0a1b4b24d3c | 407 | |
sfjmt | 3:b0a1b4b24d3c | 408 | //loop |
sfjmt | 3:b0a1b4b24d3c | 409 | while (receiveMode||sendMode) |
sfjmt | 3:b0a1b4b24d3c | 410 | { |
sfjmt | 3:b0a1b4b24d3c | 411 | printf("loop..."); |
sfjmt | 3:b0a1b4b24d3c | 412 | |
sfjmt | 3:b0a1b4b24d3c | 413 | Net::poll(); |
sfjmt | 3:b0a1b4b24d3c | 414 | // |
sfjmt | 3:b0a1b4b24d3c | 415 | // if(sendMode) |
sfjmt | 3:b0a1b4b24d3c | 416 | // { |
sfjmt | 3:b0a1b4b24d3c | 417 | // sendMes.setTopAddress(topAddress);//top address |
sfjmt | 3:b0a1b4b24d3c | 418 | // sendMes.setSubAddress(subAddress[0]);//sub address |
sfjmt | 3:b0a1b4b24d3c | 419 | // sendMes.setArgs("i", 1);//type , value |
sfjmt | 3:b0a1b4b24d3c | 420 | // osc.sendOsc(&sendMes);//send! |
sfjmt | 3:b0a1b4b24d3c | 421 | // } |
sfjmt | 3:b0a1b4b24d3c | 422 | |
sfjmt | 3:b0a1b4b24d3c | 423 | // high(strip.Color(127,127,127)); |
sfjmt | 3:b0a1b4b24d3c | 424 | // wait(1.0); |
sfjmt | 3:b0a1b4b24d3c | 425 | // low(); |
sfjmt | 3:b0a1b4b24d3c | 426 | // wait(1.0); |
ehbmbed2 | 1:c70352e536c0 | 427 | |
sfjmt | 3:b0a1b4b24d3c | 428 | // fade(127,5); |
sfjmt | 3:b0a1b4b24d3c | 429 | // wait(1.0); |
sfjmt | 3:b0a1b4b24d3c | 430 | // scanner(127,127,127,0);//white,slow |
sfjmt | 3:b0a1b4b24d3c | 431 | |
sfjmt | 3:b0a1b4b24d3c | 432 | // colorChase(strip.Color(127,127,127), 2);//white |
sfjmt | 3:b0a1b4b24d3c | 433 | // wait(1.0); |
sfjmt | 3:b0a1b4b24d3c | 434 | // |
sfjmt | 3:b0a1b4b24d3c | 435 | // pinStatusChange(1,1,1,1,1,1,1,1);//pin status change |
sfjmt | 3:b0a1b4b24d3c | 436 | // colorChase(strip.Color(127,127,127), 1);//white |
sfjmt | 3:b0a1b4b24d3c | 437 | // wait(0.2); |
sfjmt | 3:b0a1b4b24d3c | 438 | // |
sfjmt | 3:b0a1b4b24d3c | 439 | // pinStatusChange(0,0,0,0,0,0,0,0);//pin status change |
sfjmt | 3:b0a1b4b24d3c | 440 | // colorChase(strip.Color(127,127,127), 1);//white |
sfjmt | 3:b0a1b4b24d3c | 441 | // wait(0.2); |
sfjmt | 3:b0a1b4b24d3c | 442 | // |
sfjmt | 3:b0a1b4b24d3c | 443 | // pinStatusChange(1,1,0);//pin status change |
sfjmt | 3:b0a1b4b24d3c | 444 | // colorChase(strip.Color(127,127,127), 1);//white |
sfjmt | 3:b0a1b4b24d3c | 445 | // wait(0.2); |
sfjmt | 3:b0a1b4b24d3c | 446 | // |
sfjmt | 3:b0a1b4b24d3c | 447 | // pinStatusChange(0,1,1);//pin status change |
sfjmt | 3:b0a1b4b24d3c | 448 | // colorChase(strip.Color(127,127,127), 1);//white |
sfjmt | 3:b0a1b4b24d3c | 449 | // wait(0.2); |
sfjmt | 3:b0a1b4b24d3c | 450 | // |
sfjmt | 3:b0a1b4b24d3c | 451 | // pinStatusChange(0,0,1);//pin status change |
sfjmt | 3:b0a1b4b24d3c | 452 | // colorChase(strip.Color(127,127,127), 1);//white |
sfjmt | 3:b0a1b4b24d3c | 453 | // wait(0.2); |
sfjmt | 3:b0a1b4b24d3c | 454 | // |
sfjmt | 3:b0a1b4b24d3c | 455 | // pinStatusChange(0,0,0);//pin status change |
sfjmt | 3:b0a1b4b24d3c | 456 | // colorChase(strip.Color(127,127,127), 1);//white |
sfjmt | 3:b0a1b4b24d3c | 457 | // wait(0.2); |
sfjmt | 3:b0a1b4b24d3c | 458 | |
sfjmt | 3:b0a1b4b24d3c | 459 | } |
ehbmbed2 | 1:c70352e536c0 | 460 | |
sfjmt | 3:b0a1b4b24d3c | 461 | //loop |
sfjmt | 3:b0a1b4b24d3c | 462 | // while(1) |
sfjmt | 3:b0a1b4b24d3c | 463 | // { |
sfjmt | 3:b0a1b4b24d3c | 464 | /* |
sfjmt | 3:b0a1b4b24d3c | 465 | sample |
sfjmt | 3:b0a1b4b24d3c | 466 | */ |
sfjmt | 3:b0a1b4b24d3c | 467 | // allBlink(strip.Color(127,127,127)); |
sfjmt | 3:b0a1b4b24d3c | 468 | // colorChase(strip.Color(127,127,127), 2);//white |
sfjmt | 3:b0a1b4b24d3c | 469 | // colorWipe(strip.Color(127,127,127), 2);//white |
sfjmt | 3:b0a1b4b24d3c | 470 | // colorChase(strip.Color(127,0,0), 10); // full brightness red |
sfjmt | 3:b0a1b4b24d3c | 471 | // colorChase(strip.Color(127,127,0), 10); // orange |
sfjmt | 3:b0a1b4b24d3c | 472 | // colorChase(strip.Color(0,127,0), 10); // green |
sfjmt | 3:b0a1b4b24d3c | 473 | // colorChase(strip.Color(0,127,127), 10); // teal |
sfjmt | 3:b0a1b4b24d3c | 474 | // colorChase(strip.Color(0,0,127), 10); // blue |
sfjmt | 3:b0a1b4b24d3c | 475 | // colorChase(strip.Color(127,0,127), 10); // violet |
sfjmt | 3:b0a1b4b24d3c | 476 | // // fill the entire strip with... |
sfjmt | 3:b0a1b4b24d3c | 477 | // colorWipe(strip.Color(127,0,0), 1000); // red |
sfjmt | 3:b0a1b4b24d3c | 478 | // colorWipe(strip.Color(0, 127,0), 10); // green |
sfjmt | 3:b0a1b4b24d3c | 479 | // colorWipe(strip.Color(0,0,127), 10); // blue |
sfjmt | 3:b0a1b4b24d3c | 480 | // rainbow(10); |
sfjmt | 3:b0a1b4b24d3c | 481 | // rainbowCycle(5); // make it go through the cycle fairly fast |
sfjmt | 3:b0a1b4b24d3c | 482 | // // Back-and-forth lights |
sfjmt | 3:b0a1b4b24d3c | 483 | // scanner(127,0,0, 50); // red, slow |
sfjmt | 3:b0a1b4b24d3c | 484 | // scanner(0,0,127, 5); // blue, fast |
sfjmt | 3:b0a1b4b24d3c | 485 | |
sfjmt | 3:b0a1b4b24d3c | 486 | //Set data |
sfjmt | 3:b0a1b4b24d3c | 487 | // if(sendMode) |
sfjmt | 3:b0a1b4b24d3c | 488 | // { |
sfjmt | 3:b0a1b4b24d3c | 489 | // Net::poll(); |
sfjmt | 3:b0a1b4b24d3c | 490 | // |
sfjmt | 3:b0a1b4b24d3c | 491 | // sendMes.setTopAddress(topAddress);//top address |
sfjmt | 3:b0a1b4b24d3c | 492 | // sendMes.setSubAddress(subAddress[0]);//sub address |
sfjmt | 3:b0a1b4b24d3c | 493 | // sendMes.setArgs("i", 1);//type , value |
sfjmt | 3:b0a1b4b24d3c | 494 | // osc.sendOsc(&sendMes);//send! |
sfjmt | 3:b0a1b4b24d3c | 495 | // } |
sfjmt | 3:b0a1b4b24d3c | 496 | // } |
sfjmt | 3:b0a1b4b24d3c | 497 | } |