解决RGB灯每10次闪烁存在一次触发亮灯的情况

This commit is contained in:
OPTOC
2025-10-21 12:23:37 +08:00
parent a61905726e
commit 88dadb4f0e

View File

@@ -99,39 +99,44 @@ void rgb_update_cyle(uint8_t index, uint16_t cyle)
}
void rgb_color_change(uint8_t index, uint8_t color)
{
switch(color)
{
case RGB_COLOR_RAD:
memcpy(&expression[index], &rgb_color_rad, sizeof(rgb_color_rad));
break;
case RGB_COLOR_ORANGE:
memcpy(&expression[index], &rgb_color_orange, sizeof(rgb_color_orange));
break;
case RGB_COLOR_GREEN:
memcpy(&expression[index], &rgb_color_green, sizeof(rgb_color_green));
break;
case RGB_COLOR_WHITE:
memcpy(&expression[index], &rgb_color_white, sizeof(rgb_color_white));
break;
case RGB_COLOR_PURPLE:
memcpy(&expression[index], &rgb_color_purple, sizeof(rgb_color_purple));
break;
case RGB_COLOR_CYAN:
memcpy(&expression[index], &rgb_color_cyan, sizeof(rgb_color_cyan));
break;
case RGB_COLOR_BLUE:
memcpy(&expression[index], &rgb_color_blue, sizeof(rgb_color_blue));
break;
case RGB_COLOR_GREEN_WHITE:
memcpy(&expression[index], &rgb_color_green_white, sizeof(rgb_color_green_white));
break;
case RGB_COLOR_GREEN_PURPLE:
memcpy(&expression[index], &rgb_color_green_purple, sizeof(rgb_color_green_purple));
break;
default:
break;
}
expression[index].index = index;
static uint8_t rgb_color_lat[EXAMPLE_LED_NUMBERS] = {0};
if(rgb_color_lat[index] != color)
{
switch(color)
{
case RGB_COLOR_RAD:
memcpy(&expression[index], &rgb_color_rad, sizeof(rgb_color_rad));
break;
case RGB_COLOR_ORANGE:
memcpy(&expression[index], &rgb_color_orange, sizeof(rgb_color_orange));
break;
case RGB_COLOR_GREEN:
memcpy(&expression[index], &rgb_color_green, sizeof(rgb_color_green));
break;
case RGB_COLOR_WHITE:
memcpy(&expression[index], &rgb_color_white, sizeof(rgb_color_white));
break;
case RGB_COLOR_PURPLE:
memcpy(&expression[index], &rgb_color_purple, sizeof(rgb_color_purple));
break;
case RGB_COLOR_CYAN:
memcpy(&expression[index], &rgb_color_cyan, sizeof(rgb_color_cyan));
break;
case RGB_COLOR_BLUE:
memcpy(&expression[index], &rgb_color_blue, sizeof(rgb_color_blue));
break;
case RGB_COLOR_GREEN_WHITE:
memcpy(&expression[index], &rgb_color_green_white, sizeof(rgb_color_green_white));
break;
case RGB_COLOR_GREEN_PURPLE:
memcpy(&expression[index], &rgb_color_green_purple, sizeof(rgb_color_green_purple));
break;
default:
break;
}
expression[index].index = index;
rgb_color_lat[index] = color;
}
}
void rgb_toggle(uint8_t index, rgb_color_t* rgb_color)
{