Kevin Conley
/
PennGradCap
Mbed controller code for lpd8806 rgb led strips on top of a graduation cap.
main.cpp@1:66f5123418a1, 2013-02-10 (annotated)
- 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?
User | Revision | Line number | New 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 | } |