Added HSV support
This commit is contained in:
parent
5806903747
commit
5d0ed0a5e2
@ -128,6 +128,57 @@ void led_set(uint8_t lednum, uint16_t red, uint16_t green, uint16_t blue)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void led_set_hsv(uint8_t lednum, uint16_t hue, uint8_t saturation, uint8_t value)
|
||||||
|
{
|
||||||
|
uint16_t red, green, blue;
|
||||||
|
|
||||||
|
//Calculate hue
|
||||||
|
if ( hue < 61 ) {
|
||||||
|
red = 255;
|
||||||
|
green = ( 425UL * hue ) / 100;
|
||||||
|
blue = 0;
|
||||||
|
} else if ( hue < 121 ) {
|
||||||
|
red = 255 - ( ( 425UL * ( hue - 60 ) ) / 100 );
|
||||||
|
green = 255;
|
||||||
|
blue = 0;
|
||||||
|
} else if ( hue < 181 ) {
|
||||||
|
red = 0;
|
||||||
|
green = 255;
|
||||||
|
blue = ( 425UL * ( hue - 120 ) ) / 100;
|
||||||
|
} else if ( hue < 241 ) {
|
||||||
|
red = 0;
|
||||||
|
green = 255 - ( ( 425UL * ( hue - 180 ) ) / 100 );
|
||||||
|
blue = 255;
|
||||||
|
} else if ( hue < 301 ) {
|
||||||
|
red = ( 425UL * ( hue - 240 ) ) / 100;
|
||||||
|
green = 0;
|
||||||
|
blue = 255;
|
||||||
|
} else if ( hue < 360) {
|
||||||
|
red = 255;
|
||||||
|
green = 0;
|
||||||
|
blue = 255 - ( ( 425UL * ( hue - 300 ) ) / 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Calculate saturation
|
||||||
|
uint8_t diff;
|
||||||
|
saturation = 100 - saturation;
|
||||||
|
diff = ( ( 255 - red ) * saturation ) / 100;
|
||||||
|
red += diff;
|
||||||
|
|
||||||
|
diff = ( ( 255 - green ) * saturation ) / 100;
|
||||||
|
green += diff;
|
||||||
|
|
||||||
|
diff = ( ( 255 - blue ) * saturation ) / 100;
|
||||||
|
blue += diff;
|
||||||
|
|
||||||
|
//Calculate value
|
||||||
|
red = ( red * value ) / 100;
|
||||||
|
green = ( green * value ) / 100;
|
||||||
|
blue = ( blue * value ) / 100;
|
||||||
|
|
||||||
|
led_set(lednum, red<<8, green<<8, blue<<8);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Write the data stored in the LED buffers via led_set().
|
* Write the data stored in the LED buffers via led_set().
|
||||||
*/
|
*/
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
void led_init(void);
|
void led_init(void);
|
||||||
void led_set(uint8_t lednum, uint16_t red, uint16_t green, uint16_t blue);
|
void led_set(uint8_t lednum, uint16_t red, uint16_t green, uint16_t blue);
|
||||||
|
void led_set_hsv(uint8_t lednum, uint16_t hue, uint8_t saturation, uint8_t value);
|
||||||
void led_flush(void);
|
void led_flush(void);
|
||||||
void led_clear(void);
|
void led_clear(void);
|
||||||
void led_turn_all_on(void);
|
void led_turn_all_on(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user