void clockColor() {
int8_t color_idx = 0;
switch (thisMode) {
case MC_CLOCK:
// Если режим часов включен как "Ночные часы" - цвет определять по настроенному цвету ночных часов
// Иначе - цвет часов зависит от режима (Монохром, Каждая цифра свой цвет, Цвет часов-точек-минут" и т.д)
color_idx = isNightClock ? -2 : COLOR_MODE;
break;
case MC_COLORS:
case MC_FILL_COLOR:
color_idx = -1;
break;
default:
color_idx = COLOR_MODE;
break;
}
if (color_idx == -2) {
// Цвет по индексу настроек текущего ночного цвета
CRGB color = getNightClockColorByIndex(nightClockColor);
for (uint8_t i = 0; i < 5; i++) clockLED[i] = color;
} else if (color_idx == -1) {
// Инверсный от основного цвет
CRGB color = globalColor == 0xFFFFFF ? CRGB::Navy : -CRGB(globalColor);
for (uint8_t i = 0; i < 5; i++) clockLED[i] = color;
} else {
if (color_idx == 0) {
// Монохромные часы
uint8_t hue = effectScaleParam[MC_CLOCK];
CHSV color = hue <= 1 ? CHSV(255, 0, 255): CHSV(hue, 255, 255);
for (uint8_t i = 0; i < 5; i++) clockLED[i] = color;
} else if (color_idx == 1) {
// Каждая цифра своим цветом, плавная смена цвета
for (uint8_t i = 0; i < 5; i++) clockLED[i] = CHSV(clockHue + HUE_GAP * i, 255, 255);
clockLED[2] = CHSV(clockHue + 128 + HUE_GAP * 1, 255, 255); // точки делаем другой цвет
} else if (color_idx == 2) {
// Часы, точки, минуты своим цветом, плавная смена цвета
clockLED[0] = CHSV(clockHue + HUE_GAP * 0, 255, 255);
clockLED[1] = CHSV(clockHue + HUE_GAP * 0, 255, 255);
clockLED[2] = CHSV(clockHue + 128 + HUE_GAP * 1, 255, 255); // точки делаем другой цвет
clockLED[3] = CHSV(clockHue + HUE_GAP * 2, 255, 255);
clockLED[4] = CHSV(clockHue + HUE_GAP * 2, 255, 255);
} else {
CRGB color = getGlobalClockColor();
for (uint8_t i = 0; i < 5; i++) clockLED[i] = color;
}
}
}
void Digit(uint8_t digit, uint8_t cursor) { // функция отображения символов
for (uint8_t mask = 0b01000000; mask > 0; mask >>= 1) {
leds[cursor] = (digit & mask) ? (c.new_god ? ColorTable[rand() % NUM_COLORS - 1] : ledColor) : CRGB(0, 0, 0);
cursor += LEDS_IN_SEGMENT;
}
}