Let the on board RGB led run thru the color circle
Test program for LPC 1549 and LPC 812 board. It use the on board RGB led to scroll thru the colors.
main.cpp
- Committer:
- dreschpe
- Date:
- 2015-10-17
- Revision:
- 1:c92fa914546d
- Parent:
- 0:5a281c0ca6ae
File content as of revision 1:c92fa914546d:
#include "mbed.h" /* the led's are connected to vcc, so a PwmOut of 100% will shut off the led and 0% will let it shine ! */ PwmOut r (LED_RED); PwmOut g (LED_GREEN); PwmOut b (LED_BLUE); // function to convert hue , saturation and value to RGB // see http://en.wikipedia.org/wiki/HSL_and_HSV void hsv2rgb(float H,float S, float V) { float f,h,p,q,t; int i; if( S == 0.0) { r = 1.0 - V; // invert pwm ! g = 1.0 - V; b = 1.0 - V; return; } if(H > 360.0) H = 0.0; // check values if(S > 1.0) S = 1.0; if(S < 0.0) S = 0.0; if(V > 1.0) V = 1.0; if(V < 0.0) V = 0.0; h = H / 60.0; i = (int) h; f = h - i; p = V * (1.0 - S); q = V * (1.0 - (S * f)); t = V * (1.0 - (S * (1.0 - f))); switch(i) { case 0: r = 1.0 - V; // invert pwm ! g = 1.0 - t; b = 1.0 - p; break; case 1: r = 1.0 - q; g = 1.0 - V; b = 1.0 - p; break; case 2: r = 1.0 - p; g = 1.0 - V; b = 1.0 - t; break; case 3: r = 1.0 - p; g = 1.0 - q; b = 1.0 - V; break; case 4: r = 1.0 - t; g = 1.0 - p; b = 1.0 - V; break; case 5: default: r = 1.0 - V; g = 1.0 - p; b = 1.0 - q; break; } } int main() { float h; // hue float s,v; // saturation and value; r.period(0.001); // set pwm period s = 1.0; v = 1.0; h = 0.0; for(;;){ // run thru colors hsv2rgb(h,s,v); wait_ms(50); if(h<360) h++; else h = 0; } }