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 David Grayson

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?

UserRevisionLine numberNew 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 }