Chỉ cần nhập 1 thông số, bạn sẽ thu được mã RGB của 1 màu trên phổ cầu vồng. Mình chia phổ màu từ Đỏ đến Tím thành 256 khoảng. Nhập i = 0 bạn sẽ có màu đỏ, i =256 bạn được màu tím:
Mong rằng bài viết này hữu ích cho các coder :d
Code:
void coderainbow (int16_t i, uint8_t *R, uint8_t *G, uint8_t *B) // i: [0:256]
{
if ((i>=0) && (i <= 256/4))
{
*R = 255;
*G = 255*i/64;
*B = 0;
}
else if ((i>256/4) && (i <= 256/2))
{
*R = 255*(128-i)/64;
*G = 255;
*B = 0;
}
else if ((i>256/2) && (i <= 256*3/4))
{
*R = 0;
*G = 255*(192-i)/64;
*B = 255*(i-128)/64;
}
else
{
*R = 255*(i-192)/64;
*G = 0;
*B = 255;
}
}