merge HSV support from default
This commit is contained in:
		| @@ -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(). | ||||
|  */ | ||||
|   | ||||
| @@ -18,6 +18,7 @@ | ||||
|  | ||||
| void led_init(void); | ||||
| 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_clear(void); | ||||
| void led_turn_all_on(void); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user