This program was forked in order to control LED strips at the Heriot Watt Robotics Society Hamilton Circle Electronics workshop
Dependencies: PololuLedStrip mbed
Fork of LedStripRainbow by
main.cpp@7:c5db6fcf061f, 2017-11-09 (annotated)
- Committer:
- coloursearch
- Date:
- Thu Nov 09 17:19:45 2017 +0000
- Revision:
- 7:c5db6fcf061f
- Parent:
- 6:0882f93da02f
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
DavidEGrayson | 0:a3a9c486fc68 | 1 | #include "mbed.h" |
DavidEGrayson | 0:a3a9c486fc68 | 2 | #include "PololuLedStrip.h" |
DavidEGrayson | 0:a3a9c486fc68 | 3 | |
coloursearch | 7:c5db6fcf061f | 4 | PololuLedStrip ledStrip(p13); |
DavidEGrayson | 0:a3a9c486fc68 | 5 | |
coloursearch | 7:c5db6fcf061f | 6 | #define LED_COUNT 20 |
DavidEGrayson | 0:a3a9c486fc68 | 7 | rgb_color colors[LED_COUNT]; |
DavidEGrayson | 0:a3a9c486fc68 | 8 | |
DavidEGrayson | 0:a3a9c486fc68 | 9 | Timer timer; |
DavidEGrayson | 0:a3a9c486fc68 | 10 | |
coloursearch | 7:c5db6fcf061f | 11 | DigitalOut myled(LED1); |
coloursearch | 7:c5db6fcf061f | 12 | |
DavidEGrayson | 0:a3a9c486fc68 | 13 | // Converts a color from the HSV representation to RGB. |
coloursearch | 7:c5db6fcf061f | 14 | rgb_color hsvToRgb(float h, float s, float v){ |
DavidEGrayson | 0:a3a9c486fc68 | 15 | int i = floor(h * 6); |
DavidEGrayson | 0:a3a9c486fc68 | 16 | float f = h * 6 - i; |
DavidEGrayson | 0:a3a9c486fc68 | 17 | float p = v * (1 - s); |
DavidEGrayson | 0:a3a9c486fc68 | 18 | float q = v * (1 - f * s); |
DavidEGrayson | 0:a3a9c486fc68 | 19 | float t = v * (1 - (1 - f) * s); |
DavidEGrayson | 2:69cc4148a7fa | 20 | float r = 0, g = 0, b = 0; |
DavidEGrayson | 0:a3a9c486fc68 | 21 | switch(i % 6){ |
DavidEGrayson | 0:a3a9c486fc68 | 22 | case 0: r = v; g = t; b = p; break; |
DavidEGrayson | 0:a3a9c486fc68 | 23 | case 1: r = q; g = v; b = p; break; |
DavidEGrayson | 0:a3a9c486fc68 | 24 | case 2: r = p; g = v; b = t; break; |
DavidEGrayson | 0:a3a9c486fc68 | 25 | case 3: r = p; g = q; b = v; break; |
DavidEGrayson | 0:a3a9c486fc68 | 26 | case 4: r = t; g = p; b = v; break; |
DavidEGrayson | 0:a3a9c486fc68 | 27 | case 5: r = v; g = p; b = q; break; |
DavidEGrayson | 0:a3a9c486fc68 | 28 | } |
DavidEGrayson | 0:a3a9c486fc68 | 29 | return (rgb_color){r * 255, g * 255, b * 255}; |
DavidEGrayson | 0:a3a9c486fc68 | 30 | } |
DavidEGrayson | 0:a3a9c486fc68 | 31 | |
coloursearch | 7:c5db6fcf061f | 32 | int main(){ |
DavidEGrayson | 0:a3a9c486fc68 | 33 | timer.start(); |
DavidEGrayson | 0:a3a9c486fc68 | 34 | |
coloursearch | 7:c5db6fcf061f | 35 | myled = 1; |
DavidEGrayson | 0:a3a9c486fc68 | 36 | |
coloursearch | 7:c5db6fcf061f | 37 | while(1) { |
coloursearch | 7:c5db6fcf061f | 38 | |
coloursearch | 7:c5db6fcf061f | 39 | // Update the colors array. |
coloursearch | 7:c5db6fcf061f | 40 | // uint32_t time = timer.read_ms(); |
coloursearch | 7:c5db6fcf061f | 41 | |
coloursearch | 7:c5db6fcf061f | 42 | for(int i = 0; i < LED_COUNT; i++) { |
coloursearch | 7:c5db6fcf061f | 43 | //uint8_t phase = (time >> 4) - (i << 2); |
coloursearch | 7:c5db6fcf061f | 44 | // colors[i] = hsvToRgb(phase / 256.0, 1.0, 1.0); |
coloursearch | 7:c5db6fcf061f | 45 | colors[i] = (rgb_color){255, 0, 0}; |
coloursearch | 7:c5db6fcf061f | 46 | } |
coloursearch | 7:c5db6fcf061f | 47 | |
coloursearch | 7:c5db6fcf061f | 48 | // Send the colors to the LED strip. |
coloursearch | 7:c5db6fcf061f | 49 | |
coloursearch | 7:c5db6fcf061f | 50 | ledStrip.write(colors, LED_COUNT); |
coloursearch | 7:c5db6fcf061f | 51 | wait(0.5); |
DavidEGrayson | 0:a3a9c486fc68 | 52 | } |
DavidEGrayson | 0:a3a9c486fc68 | 53 | } |