Mbed controller code for lpd8806 rgb led strips on top of a graduation cap.

Dependencies:   LPD8806 mbed

Committer:
kcon
Date:
Sun Feb 10 18:37:28 2013 +0000
Revision:
1:66f5123418a1
Parent:
0:1f4ea5a43e97
Publishing gradcap code.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kcon 0:1f4ea5a43e97 1 // Mbed program to test LPD8806-based RGB LED Strips
kcon 0:1f4ea5a43e97 2 // (c) 2011 Jelmer Tiete
kcon 0:1f4ea5a43e97 3 // This library is ported from the Arduino implementation of Adafruit Industries
kcon 0:1f4ea5a43e97 4 // found at: http://github.com/adafruit/LPD8806
kcon 0:1f4ea5a43e97 5 // and their strips: http://www.adafruit.com/products/306
kcon 0:1f4ea5a43e97 6 // Released under the MIT License: http://mbed.org/license/mit
kcon 0:1f4ea5a43e97 7 //
kcon 0:1f4ea5a43e97 8 // standard connected to 1st hardware SPI
kcon 0:1f4ea5a43e97 9 // LPD8806 <> MBED
kcon 0:1f4ea5a43e97 10 // DATA -> P5
kcon 0:1f4ea5a43e97 11 // CLOCK -> p7
kcon 0:1f4ea5a43e97 12 /*****************************************************************************/
kcon 0:1f4ea5a43e97 13
kcon 0:1f4ea5a43e97 14 #include "LPD8806.h"
kcon 0:1f4ea5a43e97 15
kcon 0:1f4ea5a43e97 16 LPD8806 strip = LPD8806(64);
kcon 0:1f4ea5a43e97 17
kcon 0:1f4ea5a43e97 18 int t[64] = {56,
kcon 0:1f4ea5a43e97 19 57,
kcon 0:1f4ea5a43e97 20 58,
kcon 0:1f4ea5a43e97 21 59,
kcon 0:1f4ea5a43e97 22 60,
kcon 0:1f4ea5a43e97 23 61,
kcon 0:1f4ea5a43e97 24 62,
kcon 0:1f4ea5a43e97 25 63,
kcon 0:1f4ea5a43e97 26 55,
kcon 0:1f4ea5a43e97 27 54,
kcon 0:1f4ea5a43e97 28 53,
kcon 0:1f4ea5a43e97 29 52,
kcon 0:1f4ea5a43e97 30 51,
kcon 0:1f4ea5a43e97 31 50,
kcon 0:1f4ea5a43e97 32 49,
kcon 0:1f4ea5a43e97 33 48,
kcon 0:1f4ea5a43e97 34 40,
kcon 0:1f4ea5a43e97 35 41,
kcon 0:1f4ea5a43e97 36 42,
kcon 0:1f4ea5a43e97 37 43,
kcon 0:1f4ea5a43e97 38 44,
kcon 0:1f4ea5a43e97 39 45,
kcon 0:1f4ea5a43e97 40 46,
kcon 0:1f4ea5a43e97 41 47,
kcon 0:1f4ea5a43e97 42 39,
kcon 0:1f4ea5a43e97 43 38,
kcon 0:1f4ea5a43e97 44 37,
kcon 0:1f4ea5a43e97 45 36,
kcon 0:1f4ea5a43e97 46 35,
kcon 0:1f4ea5a43e97 47 34,
kcon 0:1f4ea5a43e97 48 33,
kcon 0:1f4ea5a43e97 49 32,
kcon 0:1f4ea5a43e97 50 24,
kcon 0:1f4ea5a43e97 51 25,
kcon 0:1f4ea5a43e97 52 26,
kcon 0:1f4ea5a43e97 53 27,
kcon 0:1f4ea5a43e97 54 28,
kcon 0:1f4ea5a43e97 55 29,
kcon 0:1f4ea5a43e97 56 30,
kcon 0:1f4ea5a43e97 57 31,
kcon 0:1f4ea5a43e97 58 23,
kcon 0:1f4ea5a43e97 59 22,
kcon 0:1f4ea5a43e97 60 21,
kcon 0:1f4ea5a43e97 61 20,
kcon 0:1f4ea5a43e97 62 19,
kcon 0:1f4ea5a43e97 63 18,
kcon 0:1f4ea5a43e97 64 17,
kcon 0:1f4ea5a43e97 65 16,
kcon 0:1f4ea5a43e97 66 8,
kcon 0:1f4ea5a43e97 67 9,
kcon 0:1f4ea5a43e97 68 10,
kcon 0:1f4ea5a43e97 69 11,
kcon 0:1f4ea5a43e97 70 12,
kcon 0:1f4ea5a43e97 71 13,
kcon 0:1f4ea5a43e97 72 14,
kcon 0:1f4ea5a43e97 73 15,
kcon 0:1f4ea5a43e97 74 7,
kcon 0:1f4ea5a43e97 75 6,
kcon 0:1f4ea5a43e97 76 5,
kcon 0:1f4ea5a43e97 77 4,
kcon 0:1f4ea5a43e97 78 3,
kcon 0:1f4ea5a43e97 79 2,
kcon 0:1f4ea5a43e97 80 1,
kcon 0:1f4ea5a43e97 81 0};
kcon 0:1f4ea5a43e97 82
kcon 0:1f4ea5a43e97 83 int r[64] = {56, // 0
kcon 0:1f4ea5a43e97 84 55, // 1
kcon 0:1f4ea5a43e97 85 40, // 2
kcon 0:1f4ea5a43e97 86 39, // 3
kcon 0:1f4ea5a43e97 87 24, // 4
kcon 0:1f4ea5a43e97 88 23, // 5
kcon 0:1f4ea5a43e97 89 8, // 6
kcon 0:1f4ea5a43e97 90 7, // 7
kcon 0:1f4ea5a43e97 91 6, // 8
kcon 0:1f4ea5a43e97 92 9, // 9
kcon 0:1f4ea5a43e97 93 22, // 10
kcon 0:1f4ea5a43e97 94 25, // 11
kcon 0:1f4ea5a43e97 95 38, // 12
kcon 0:1f4ea5a43e97 96 41, // 13
kcon 0:1f4ea5a43e97 97 54, // 14
kcon 0:1f4ea5a43e97 98 57, // 15
kcon 0:1f4ea5a43e97 99 58, // 16
kcon 0:1f4ea5a43e97 100 53, // 17
kcon 0:1f4ea5a43e97 101 42, // 18
kcon 0:1f4ea5a43e97 102 37, // 19
kcon 0:1f4ea5a43e97 103 26, // 20
kcon 0:1f4ea5a43e97 104 21, // 21
kcon 0:1f4ea5a43e97 105 10, // 22
kcon 0:1f4ea5a43e97 106 5, // 23
kcon 0:1f4ea5a43e97 107 4, // 24
kcon 0:1f4ea5a43e97 108 11, // 25
kcon 0:1f4ea5a43e97 109 20, // 26
kcon 0:1f4ea5a43e97 110 27, // 27
kcon 0:1f4ea5a43e97 111 36, // 28
kcon 0:1f4ea5a43e97 112 43, // 29
kcon 0:1f4ea5a43e97 113 52, // 30
kcon 0:1f4ea5a43e97 114 59, // 31
kcon 0:1f4ea5a43e97 115 60, // 32
kcon 0:1f4ea5a43e97 116 51, // 33
kcon 0:1f4ea5a43e97 117 44, // 34
kcon 0:1f4ea5a43e97 118 35, // 35
kcon 0:1f4ea5a43e97 119 28, // 36
kcon 0:1f4ea5a43e97 120 19, // 37
kcon 0:1f4ea5a43e97 121 12, // 38
kcon 0:1f4ea5a43e97 122 3, // 39
kcon 0:1f4ea5a43e97 123 2, // 40
kcon 0:1f4ea5a43e97 124 13, // 41
kcon 0:1f4ea5a43e97 125 18, // 42
kcon 0:1f4ea5a43e97 126 29, // 43
kcon 0:1f4ea5a43e97 127 34, // 44
kcon 0:1f4ea5a43e97 128 45, // 45
kcon 0:1f4ea5a43e97 129 50, // 46
kcon 0:1f4ea5a43e97 130 61, // 47
kcon 0:1f4ea5a43e97 131 62, // 48
kcon 0:1f4ea5a43e97 132 49, // 49
kcon 0:1f4ea5a43e97 133 46, // 50
kcon 0:1f4ea5a43e97 134 33, // 51
kcon 0:1f4ea5a43e97 135 30, // 52
kcon 0:1f4ea5a43e97 136 17, // 53
kcon 0:1f4ea5a43e97 137 14, // 54
kcon 0:1f4ea5a43e97 138 1, // 55
kcon 0:1f4ea5a43e97 139 0, // 56
kcon 0:1f4ea5a43e97 140 15, // 57
kcon 0:1f4ea5a43e97 141 16, // 58
kcon 0:1f4ea5a43e97 142 31, // 59
kcon 0:1f4ea5a43e97 143 32, // 60
kcon 0:1f4ea5a43e97 144 47, // 61
kcon 0:1f4ea5a43e97 145 48, // 62
kcon 0:1f4ea5a43e97 146 63, // 63
kcon 0:1f4ea5a43e97 147 };
kcon 0:1f4ea5a43e97 148
kcon 0:1f4ea5a43e97 149 void update(uint32_t * cap) {
kcon 0:1f4ea5a43e97 150 int i;
kcon 0:1f4ea5a43e97 151
kcon 0:1f4ea5a43e97 152 for (i = 0; i < 64; i++) {
kcon 0:1f4ea5a43e97 153 strip.setPixelColor(t[i], cap[i]);
kcon 0:1f4ea5a43e97 154 }
kcon 0:1f4ea5a43e97 155 }
kcon 0:1f4ea5a43e97 156
kcon 0:1f4ea5a43e97 157 // Chase a dot down the strip
kcon 0:1f4ea5a43e97 158 // good for testing purposes
kcon 0:1f4ea5a43e97 159 void colorChase(uint32_t c, uint8_t delay) {
kcon 0:1f4ea5a43e97 160 int i;
kcon 0:1f4ea5a43e97 161
kcon 0:1f4ea5a43e97 162 for (i=0; i < strip.numPixels(); i++) {
kcon 0:1f4ea5a43e97 163 strip.setPixelColor(i, 0); // turn all pixels off
kcon 0:1f4ea5a43e97 164 }
kcon 0:1f4ea5a43e97 165
kcon 0:1f4ea5a43e97 166 for (i=0; i < strip.numPixels(); i++) {
kcon 0:1f4ea5a43e97 167 strip.setPixelColor(i, c);
kcon 0:1f4ea5a43e97 168 if (i == 0) {
kcon 0:1f4ea5a43e97 169 strip.setPixelColor(strip.numPixels()-1, 0);
kcon 0:1f4ea5a43e97 170 } else {
kcon 0:1f4ea5a43e97 171 strip.setPixelColor(i-1, 0);
kcon 0:1f4ea5a43e97 172 }
kcon 0:1f4ea5a43e97 173 strip.show();
kcon 0:1f4ea5a43e97 174 wait_ms(delay);
kcon 0:1f4ea5a43e97 175 }
kcon 0:1f4ea5a43e97 176 }
kcon 0:1f4ea5a43e97 177
kcon 0:1f4ea5a43e97 178 void colorChaseT(uint32_t c, uint8_t delay) {
kcon 0:1f4ea5a43e97 179 int i;
kcon 0:1f4ea5a43e97 180
kcon 0:1f4ea5a43e97 181 for (i=0; i < strip.numPixels(); i++) {
kcon 0:1f4ea5a43e97 182 strip.setPixelColor(t[i], 0); // turn all pixels off
kcon 0:1f4ea5a43e97 183 }
kcon 0:1f4ea5a43e97 184
kcon 0:1f4ea5a43e97 185 for (i=0; i < strip.numPixels(); i++) {
kcon 0:1f4ea5a43e97 186 strip.setPixelColor(t[i], c);
kcon 0:1f4ea5a43e97 187 if (i == 0) {
kcon 0:1f4ea5a43e97 188 strip.setPixelColor(t[strip.numPixels()-1], 0);
kcon 0:1f4ea5a43e97 189 } else {
kcon 0:1f4ea5a43e97 190 strip.setPixelColor(t[i-1], 0);
kcon 0:1f4ea5a43e97 191 }
kcon 0:1f4ea5a43e97 192 strip.show();
kcon 0:1f4ea5a43e97 193 wait_ms(delay);
kcon 0:1f4ea5a43e97 194 }
kcon 0:1f4ea5a43e97 195 }
kcon 0:1f4ea5a43e97 196
kcon 0:1f4ea5a43e97 197 // fill the dots one after the other with said color
kcon 0:1f4ea5a43e97 198 // good for testing purposes
kcon 0:1f4ea5a43e97 199 void colorWipe(uint32_t c, uint8_t delay) {
kcon 0:1f4ea5a43e97 200 int i;
kcon 0:1f4ea5a43e97 201
kcon 0:1f4ea5a43e97 202 for (i=0; i < strip.numPixels(); i++) {
kcon 0:1f4ea5a43e97 203 strip.setPixelColor(i, c);
kcon 0:1f4ea5a43e97 204 strip.show();
kcon 0:1f4ea5a43e97 205 wait_ms(delay);
kcon 0:1f4ea5a43e97 206 }
kcon 0:1f4ea5a43e97 207 }
kcon 0:1f4ea5a43e97 208
kcon 0:1f4ea5a43e97 209 //Input a value 0 to 384 to get a color value.
kcon 0:1f4ea5a43e97 210 //The colours are a transition r - g -b - back to r
kcon 0:1f4ea5a43e97 211
kcon 0:1f4ea5a43e97 212 uint32_t Wheel(uint16_t WheelPos) {
kcon 0:1f4ea5a43e97 213 uint8_t b=0;
kcon 0:1f4ea5a43e97 214 uint8_t g=0;
kcon 0:1f4ea5a43e97 215 uint8_t r = 0;
kcon 0:1f4ea5a43e97 216 switch (WheelPos / 128) {
kcon 0:1f4ea5a43e97 217 case 0:
kcon 0:1f4ea5a43e97 218 r = 127 - WheelPos % 128; //Red down
kcon 0:1f4ea5a43e97 219 g = WheelPos % 128; // Green up
kcon 0:1f4ea5a43e97 220 b = 0; //blue off
kcon 0:1f4ea5a43e97 221 break;
kcon 0:1f4ea5a43e97 222 case 1:
kcon 0:1f4ea5a43e97 223 g = 127 - WheelPos % 128; //green down
kcon 0:1f4ea5a43e97 224 b = WheelPos % 128; //blue up
kcon 0:1f4ea5a43e97 225 r = 0; //red off
kcon 0:1f4ea5a43e97 226 break;
kcon 0:1f4ea5a43e97 227 case 2:
kcon 0:1f4ea5a43e97 228 b = 127 - WheelPos % 128; //blue down
kcon 0:1f4ea5a43e97 229 r = WheelPos % 128; //red up
kcon 0:1f4ea5a43e97 230 g = 0; //green off
kcon 0:1f4ea5a43e97 231 break;
kcon 0:1f4ea5a43e97 232 }
kcon 0:1f4ea5a43e97 233 return(strip.Color(r,g,b));
kcon 0:1f4ea5a43e97 234 }
kcon 0:1f4ea5a43e97 235
kcon 0:1f4ea5a43e97 236 void rainbow(uint8_t delay) {
kcon 0:1f4ea5a43e97 237 int i, j;
kcon 0:1f4ea5a43e97 238
kcon 0:1f4ea5a43e97 239 for (j=0; j < 384; j++) { // 3 cycles of all 384 colors in the wheel
kcon 0:1f4ea5a43e97 240 for (i=0; i < strip.numPixels(); i++) {
kcon 0:1f4ea5a43e97 241 strip.setPixelColor(i, Wheel( (i + j) % 384));
kcon 0:1f4ea5a43e97 242 }
kcon 0:1f4ea5a43e97 243 strip.show(); // write all the pixels out
kcon 0:1f4ea5a43e97 244 wait_ms(delay);
kcon 0:1f4ea5a43e97 245 }
kcon 0:1f4ea5a43e97 246 }
kcon 0:1f4ea5a43e97 247
kcon 0:1f4ea5a43e97 248 // Slightly different, this one makes the rainbow wheel equally distributed
kcon 0:1f4ea5a43e97 249 // along the chain
kcon 0:1f4ea5a43e97 250 void rainbowCycle(uint8_t delay) {
kcon 0:1f4ea5a43e97 251 uint16_t i, j;
kcon 0:1f4ea5a43e97 252
kcon 0:1f4ea5a43e97 253 for (j=0; j < 384 * 5; j++) { // 5 cycles of all 384 colors in the wheel
kcon 0:1f4ea5a43e97 254 for (i=0; i < strip.numPixels(); i++) {
kcon 0:1f4ea5a43e97 255 // tricky math! we use each pixel as a fraction of the full 384-color wheel
kcon 0:1f4ea5a43e97 256 // (thats the i / strip.numPixels() part)
kcon 0:1f4ea5a43e97 257 // Then add in j which makes the colors go around per pixel
kcon 0:1f4ea5a43e97 258 // the % 384 is to make the wheel cycle around
kcon 0:1f4ea5a43e97 259 strip.setPixelColor(i, Wheel( ((i * 384 / strip.numPixels()) + j) % 384) );
kcon 0:1f4ea5a43e97 260 }
kcon 0:1f4ea5a43e97 261 strip.show(); // write all the pixels out
kcon 0:1f4ea5a43e97 262 wait_ms(delay);
kcon 0:1f4ea5a43e97 263 }
kcon 0:1f4ea5a43e97 264 }
kcon 0:1f4ea5a43e97 265
kcon 0:1f4ea5a43e97 266 // "Larson scanner" = Cylon/KITT bouncing light effect
kcon 0:1f4ea5a43e97 267 void scanner(uint8_t r, uint8_t g, uint8_t b, uint8_t delay) {
kcon 0:1f4ea5a43e97 268 int i, j, pos, dir;
kcon 0:1f4ea5a43e97 269
kcon 0:1f4ea5a43e97 270 pos = 0;
kcon 0:1f4ea5a43e97 271 dir = 1;
kcon 0:1f4ea5a43e97 272
kcon 0:1f4ea5a43e97 273 for (i=0; i<((strip.numPixels()-1) * 8); i++) {
kcon 0:1f4ea5a43e97 274 // Draw 5 pixels centered on pos. setPixelColor() will clip
kcon 0:1f4ea5a43e97 275 // any pixels off the ends of the strip, no worries there.
kcon 0:1f4ea5a43e97 276 // we'll make the colors dimmer at the edges for a nice pulse
kcon 0:1f4ea5a43e97 277 // look
kcon 0:1f4ea5a43e97 278 strip.setPixelColor(pos - 2, strip.Color(r/4, g/4, b/4));
kcon 0:1f4ea5a43e97 279 strip.setPixelColor(pos - 1, strip.Color(r/2, g/2, b/2));
kcon 0:1f4ea5a43e97 280 strip.setPixelColor(pos, strip.Color(r, g, b));
kcon 0:1f4ea5a43e97 281 strip.setPixelColor(pos + 1, strip.Color(r/2, g/2, b/2));
kcon 0:1f4ea5a43e97 282 strip.setPixelColor(pos + 2, strip.Color(r/4, g/4, b/4));
kcon 0:1f4ea5a43e97 283
kcon 0:1f4ea5a43e97 284 strip.show();
kcon 0:1f4ea5a43e97 285 wait_ms(delay);
kcon 0:1f4ea5a43e97 286 // If we wanted to be sneaky we could erase just the tail end
kcon 0:1f4ea5a43e97 287 // pixel, but it's much easier just to erase the whole thing
kcon 0:1f4ea5a43e97 288 // and draw a new one next time.
kcon 0:1f4ea5a43e97 289 for (j=-2; j<= 2; j++)
kcon 0:1f4ea5a43e97 290 strip.setPixelColor(pos+j, strip.Color(0,0,0));
kcon 0:1f4ea5a43e97 291 // Bounce off ends of strip
kcon 0:1f4ea5a43e97 292 pos += dir;
kcon 0:1f4ea5a43e97 293 if (pos < 0) {
kcon 0:1f4ea5a43e97 294 pos = 1;
kcon 0:1f4ea5a43e97 295 dir = -dir;
kcon 0:1f4ea5a43e97 296 } else if (pos >= strip.numPixels()) {
kcon 0:1f4ea5a43e97 297 pos = strip.numPixels() - 2;
kcon 0:1f4ea5a43e97 298 dir = -dir;
kcon 0:1f4ea5a43e97 299 }
kcon 0:1f4ea5a43e97 300 }
kcon 0:1f4ea5a43e97 301 }
kcon 0:1f4ea5a43e97 302
kcon 0:1f4ea5a43e97 303 void shield(int delay) {
kcon 0:1f4ea5a43e97 304
kcon 0:1f4ea5a43e97 305 uint32_t PR = strip.Color(255, 0, 0);
kcon 0:1f4ea5a43e97 306 uint32_t PB = strip.Color(9, 39, 255);
kcon 0:1f4ea5a43e97 307 uint32_t NA = strip.Color(0, 0, 0);
kcon 0:1f4ea5a43e97 308
kcon 0:1f4ea5a43e97 309 uint32_t shield[64] = {PR, PR, PR, PR, PR, PR, PR, PR,
kcon 0:1f4ea5a43e97 310 PR, NA, PR, NA, NA, PR, NA, PR,
kcon 0:1f4ea5a43e97 311 PR, PR, PR, PR, PR, PR, PR, PR,
kcon 0:1f4ea5a43e97 312 PR, NA, NA, PB, PB, NA, NA, PR,
kcon 0:1f4ea5a43e97 313 PR, NA, PB, PB, PB, PB, NA, PR,
kcon 0:1f4ea5a43e97 314 PR, PB, PB, NA, NA, PB, PB, PR,
kcon 0:1f4ea5a43e97 315 NA, PR, NA, NA, NA, NA, PR, NA,
kcon 0:1f4ea5a43e97 316 NA, NA, PR, PR, PR, PR, NA, NA};
kcon 0:1f4ea5a43e97 317
kcon 0:1f4ea5a43e97 318 update(shield);
kcon 0:1f4ea5a43e97 319 strip.show();
kcon 0:1f4ea5a43e97 320 wait_ms(delay);
kcon 0:1f4ea5a43e97 321 /*
kcon 0:1f4ea5a43e97 322 uint32_t shield2[64] = {NA, NA, PR, PR, PR, PR, PR, PR,
kcon 0:1f4ea5a43e97 323 NA, PR, PB, NA, NA, PR, NA, PR,
kcon 0:1f4ea5a43e97 324 PR, NA, PB, PB, NA, PR, PR, PR,
kcon 0:1f4ea5a43e97 325 PR, NA, NA, PB, PB, PR, NA, PR,
kcon 0:1f4ea5a43e97 326 PR, NA, NA, PB, PB, PR, NA, PR,
kcon 0:1f4ea5a43e97 327 PR, NA, PB, PB, NA, PR, PR, PR,
kcon 0:1f4ea5a43e97 328 NA, PR, PB, NA, NA, PR, NA, PR,
kcon 0:1f4ea5a43e97 329 NA, NA, PR, PR, PR, PR, PR, PR};
kcon 0:1f4ea5a43e97 330 for (i = 0; i < 10; i++) {
kcon 0:1f4ea5a43e97 331 update2(shield);
kcon 0:1f4ea5a43e97 332 strip.show();
kcon 0:1f4ea5a43e97 333 wait_ms(1500);
kcon 0:1f4ea5a43e97 334 update2(shield2);
kcon 0:1f4ea5a43e97 335 strip.show();
kcon 0:1f4ea5a43e97 336 wait_ms(1500);
kcon 0:1f4ea5a43e97 337 }
kcon 0:1f4ea5a43e97 338 */
kcon 0:1f4ea5a43e97 339 }
kcon 0:1f4ea5a43e97 340
kcon 0:1f4ea5a43e97 341 void year(int delay) {
kcon 0:1f4ea5a43e97 342 uint32_t pr = strip.Color(255, 0, 0);
kcon 0:1f4ea5a43e97 343 uint32_t pb = strip.Color(9, 39, 255);
kcon 0:1f4ea5a43e97 344
kcon 0:1f4ea5a43e97 345 uint32_t shape[64] = {pb, pb, pb, pb, pr, pb, pb, pb,
kcon 0:1f4ea5a43e97 346 pb, pb, pb, pr, pb, pb, pb, pb,
kcon 0:1f4ea5a43e97 347 pb, pb, pr, pb, pb, pr, pr, pb,
kcon 0:1f4ea5a43e97 348 pb, pr, pb, pb, pb, pb, pb, pr,
kcon 0:1f4ea5a43e97 349 pr, pb, pb, pr, pr, pb, pb, pr,
kcon 0:1f4ea5a43e97 350 pb, pb, pr, pb, pb, pr, pr, pb,
kcon 0:1f4ea5a43e97 351 pb, pb, pb, pr, pb, pb, pb, pb,
kcon 0:1f4ea5a43e97 352 pb, pb, pb, pb, pr, pb, pb, pb};
kcon 0:1f4ea5a43e97 353
kcon 0:1f4ea5a43e97 354 update(shape);
kcon 0:1f4ea5a43e97 355 strip.show();
kcon 0:1f4ea5a43e97 356 wait_ms(delay);
kcon 0:1f4ea5a43e97 357 }
kcon 0:1f4ea5a43e97 358
kcon 0:1f4ea5a43e97 359 int main() {
kcon 0:1f4ea5a43e97 360 // Start up the LED strip
kcon 0:1f4ea5a43e97 361 strip.begin();
kcon 0:1f4ea5a43e97 362
kcon 0:1f4ea5a43e97 363 // Update the strip, to start they are all 'off'
kcon 0:1f4ea5a43e97 364 strip.show();
kcon 0:1f4ea5a43e97 365 while (1) {
kcon 0:1f4ea5a43e97 366 year(10);
kcon 0:1f4ea5a43e97 367 wait_ms(5000);
kcon 0:1f4ea5a43e97 368 shield(10);
kcon 0:1f4ea5a43e97 369 wait_ms(5000);
kcon 0:1f4ea5a43e97 370 //rainbowCycle(100);
kcon 0:1f4ea5a43e97 371 colorWipe(strip.Color(127,127,0), 100); // orange
kcon 0:1f4ea5a43e97 372 colorWipe(strip.Color(127,0,0), 100); // red
kcon 0:1f4ea5a43e97 373 colorWipe(strip.Color(0, 127,0), 100); // green
kcon 0:1f4ea5a43e97 374 colorWipe(strip.Color(0,0,127), 100); // blue
kcon 0:1f4ea5a43e97 375 colorWipe(strip.Color(0,127,0), 100); // green
kcon 0:1f4ea5a43e97 376 colorWipe(strip.Color(0,127,127), 100); // teal
kcon 0:1f4ea5a43e97 377 colorWipe(strip.Color(0,0,127), 100); // blue
kcon 0:1f4ea5a43e97 378 colorWipe(strip.Color(127,0,127), 100); // violet
kcon 0:1f4ea5a43e97 379
kcon 0:1f4ea5a43e97 380 colorWipe(strip.Color(0,0,0), 100);
kcon 0:1f4ea5a43e97 381 }
kcon 0:1f4ea5a43e97 382 }