解决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) void rgb_color_change(uint8_t index, uint8_t color)
{ {
switch(color) static uint8_t rgb_color_lat[EXAMPLE_LED_NUMBERS] = {0};
{ if(rgb_color_lat[index] != color)
case RGB_COLOR_RAD: {
memcpy(&expression[index], &rgb_color_rad, sizeof(rgb_color_rad)); switch(color)
break; {
case RGB_COLOR_ORANGE: case RGB_COLOR_RAD:
memcpy(&expression[index], &rgb_color_orange, sizeof(rgb_color_orange)); memcpy(&expression[index], &rgb_color_rad, sizeof(rgb_color_rad));
break; break;
case RGB_COLOR_GREEN: case RGB_COLOR_ORANGE:
memcpy(&expression[index], &rgb_color_green, sizeof(rgb_color_green)); memcpy(&expression[index], &rgb_color_orange, sizeof(rgb_color_orange));
break; break;
case RGB_COLOR_WHITE: case RGB_COLOR_GREEN:
memcpy(&expression[index], &rgb_color_white, sizeof(rgb_color_white)); memcpy(&expression[index], &rgb_color_green, sizeof(rgb_color_green));
break; break;
case RGB_COLOR_PURPLE: case RGB_COLOR_WHITE:
memcpy(&expression[index], &rgb_color_purple, sizeof(rgb_color_purple)); memcpy(&expression[index], &rgb_color_white, sizeof(rgb_color_white));
break; break;
case RGB_COLOR_CYAN: case RGB_COLOR_PURPLE:
memcpy(&expression[index], &rgb_color_cyan, sizeof(rgb_color_cyan)); memcpy(&expression[index], &rgb_color_purple, sizeof(rgb_color_purple));
break; break;
case RGB_COLOR_BLUE: case RGB_COLOR_CYAN:
memcpy(&expression[index], &rgb_color_blue, sizeof(rgb_color_blue)); memcpy(&expression[index], &rgb_color_cyan, sizeof(rgb_color_cyan));
break; break;
case RGB_COLOR_GREEN_WHITE: case RGB_COLOR_BLUE:
memcpy(&expression[index], &rgb_color_green_white, sizeof(rgb_color_green_white)); memcpy(&expression[index], &rgb_color_blue, sizeof(rgb_color_blue));
break; break;
case RGB_COLOR_GREEN_PURPLE: case RGB_COLOR_GREEN_WHITE:
memcpy(&expression[index], &rgb_color_green_purple, sizeof(rgb_color_green_purple)); memcpy(&expression[index], &rgb_color_green_white, sizeof(rgb_color_green_white));
break; break;
default: case RGB_COLOR_GREEN_PURPLE:
break; memcpy(&expression[index], &rgb_color_green_purple, sizeof(rgb_color_green_purple));
} break;
expression[index].index = index; default:
break;
}
expression[index].index = index;
rgb_color_lat[index] = color;
}
} }
void rgb_toggle(uint8_t index, rgb_color_t* rgb_color) void rgb_toggle(uint8_t index, rgb_color_t* rgb_color)
{ {