【杰理AC692X】6脚RGB 5050灯珠实现全彩呼吸灯的方法

本文介绍了一种使用HSB(HSV)模型转换为RGB的方法来实现全彩呼吸灯的技术细节。通过调整色相、饱和度和亮度三个参数,可以平滑地过渡到各种颜色,从而实现呼吸效果。

在消费电子中,呼吸灯和渐变灯都很常见,常见的呼吸灯要么是六种颜色,要么是七种,因为做这7种颜色的呼吸灯只要让PWM同增同减就好,是最简单的做法。
但要做全彩呼吸灯就没这么简单了,可以用HSB(HSV) 转RGB的方法实现:

HSB(HSV) 通过色相/饱和度/亮度三要素来表达颜色.

有需要的自行百度

void HSVtoRGB(uint8_t *r, uint8_t *g, uint8_t *b, u16 h, u8 s, u8 v)
{
	// R,G,B from 0-255, H from 0-360, S,V from 0-100
	int i;
	float RGB_min, RGB_max;
	RGB_max = v*2.55f;
	RGB_min = RGB_max*(100 - s) / 100.0f;

	i = h / 60;
	int difs = h % 60; // factorial part of h

					   // RGB adjustment amount by hue 
	float RGB_Adj = (RGB_max - RGB_min)*difs / 60.0f;

	switch (i) {
	case 0:
		*r = RGB_max;
		*g = RGB_min + RGB_Adj;
		*b = RGB_min;
		break;
	case 1:
		*r = RGB_max - RGB_Adj;
		*g = RGB_max;
		*b = RGB_min;
		break;
	case 2:
		*r = RGB_min;
		*g = RGB_max;
		*b = RGB_min + RGB_Adj;
		break;
	case 3:
		*r = RGB_min;
		*g = RGB_max - RGB_Adj;
		*b = RGB_max;
		break;
	case 4:
		*r = RGB_min + RGB_Adj;
		*g = RGB_min;
		*b = RGB_max;
		break;
	default:		// case 5:
		*r = RGB_max;
		*g = RGB_min;
		*b = RGB_max - RGB_Adj;
		break;
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值