//需要输入的参数:灯的索引号(0-255)、灯的亮度值、灯的RGB色彩值
void set_led_light(UINT16 led_num,UINT8 led_int,UINT8 led_red,UINT8 led_green,UINT8 led_blue)
{
if(led_num<=127)
{
if(P3_6 == 0&& P3_7 == 1) //刷第一面
{
if(led_num < 96)
{
RGB_DataBuf0[led_num+32][0] = led_int;
RGB_DataBuf0[led_num+32][1] = led_red;
RGB_DataBuf0[led_num+32][2] = led_green;
RGB_DataBuf0[led_num+32][3] = led_blue;
}
else if(led_num>=96&&led_num<128)
{
RGB_DataBuf0[led_num-96][0] = led_int;
RGB_DataBuf0[led_num-96][1] = led_red;
RGB_DataBuf0[led_num-96][2] = led_green;
RGB_DataBuf0[led_num-96][3] = led_blue;
}
RGB_BufAddr = (UINT16)( &RGB_DataBuf0[ 0 ] );
}
else if(P3_6 == 1&& P3_7 == 0)//刷第二面
{
RGB_BufAddr = (UINT16)( &RGB_DataBuf1[ 0 ] );
}
}
else if(led_num>127&&led_num<256)
{
if(P3_6 == 0&& P3_7 == 1) //刷第一面
{
RGB_BufAddr = (UINT16)( &RGB_DataBuf0[ 0 ] );
}
else if(P3_6 == 1&& P3_7 == 0) //刷第二面
{
if(led_num>127&&led_num < 128+96)
{
RGB_DataBuf1[led_num-128+32][0] = led_int;
RGB_DataBuf1[led_num-128+32][1] = led_red;
RGB_DataBuf1[led_num-128+32][2] = led_green;
RGB_DataBuf1[led_num-128+32][3] = led_blue;
}
else if(led_num>=128+96&&led_num<128+128)
{
RGB_DataBuf1[led_num-128-96][0] = led_int;
RGB_DataBuf1[led_num-128-96][1] = led_red;
RGB_DataBuf1[led_num-128-96][2] = led_green;
RGB_DataBuf1[led_num-128-96][3] = led_blue;
}
RGB_BufAddr = (UINT16)( &RGB_DataBuf1[ 0 ] );
}
}
else
{
RGB_BufAddr = (UINT16)( &RGB_DataBuf2[ 0 ] );
LED_INT_ADJ = 0; //输入LED索引号错误,关闭灯
}
}
感觉灯效还是没有达到预期的效果,那怎么样效果更好看呢?看看色谱找找灵感。
这么多颜色要怎么组合才符合美学逻辑呢?
无意间拖动色谱的滑条,发现颜色组合不是随机分配的,色系是有规律变化的。下面贴一张动图演示一下:
颜色从左到右变化时,RGB的数值变化是有逻辑可循的。逻辑状态可以总结如下:
sta0:{255,0,0}->sta1 : {255,255,0}->sta2 : {0,255,0}->sta3 : {0,255,255}->sta4 : {0,0,255}->sta5 : {255,0,255}->sta0 : {255,0,0},每一组状态之间数据都是从0-255之间递增或者递减。那么,总共有255*6 = 1530种颜色组合。
目前我的板子上共有32*8个灯,我想让我的每一个灯都跑满这些颜色组合,应该怎么去实现呢?
如果每一个灯都是同时的进行相同的颜色转变,那显然是不行的,不够炫酷。我将我板子上的灯划分为32组,将这255*6种颜色组合均匀的32等份,每一组灯赋相应的初值。在软件设置一个5ms的定时器,每进一次定时器都让不同组的灯RGB数据相应递增或者递减,往自身的下一个状态去切换,即在sta0到sta5这6个状态里不停的循环。
这样一来,每组灯都是以不同的颜色但是以相同的规律变化颜色,也都是等间隔的从一个色域往另一个色域转变,不会有颜色的突变,让灯条产生一种生生不息,循环往复的波浪灯效。
至此,调光之旅告一段落。如果有需要硬件、软件资料的小伙伴,请点击底部“阅读原文”进行下载。