void TempColor(byte set_sh, int temp_x, int temp_min, int temp_max){ // Функция изменения цвета от температуры
byte sum_color;
if (set_sh == 0) temp_color = led_color;
if (temp_x < temp_min * 10) temp_x = temp_min * 10;
if (temp_x > temp_max * 10) temp_x = temp_max * 10;
if (set_sh == 1) sum_color = map(temp_x, temp_min * 10, temp_max * 10, 170, 0);
if (set_sh == 2) sum_color = map(temp_x, temp_min * 10, temp_max * 10, 170, 255);
temp_color = CHSV(sum_color, 255, 255);}
#endif
так возьмите функцию выше и вседавайте тут доделаем по уличной температуре изменение цвета
CRGB temp_color;
void DigitTemp(uint8_t digit, uint8_t cursor) {
for (uint8_t mask = 0b01000000; mask > 0; mask = mask >> 1) {
for (uint8_t i = 0; i < LEDS_IN_SEGMENT; i++) {
byte sum_color;
sum_color = map(tempS, -50, 50, 212, 10);
temp_color = CHSV(sum_color, 255, 255);
leds[cursor] = (digit & mask) ? temp_color : CRGB(0, 0, 0);
cursor++;
}
}
}
надо еше что то где то менять или удалятьпо идее так)
C++:CRGB temp_color; void DigitTemp(uint8_t digit, uint8_t cursor) { for (uint8_t mask = 0b01000000; mask > 0; mask = mask >> 1) { for (uint8_t i = 0; i < LEDS_IN_SEGMENT; i++) { byte sum_color; sum_color = map(tempS, -50, 50, 212, 10); temp_color = CHSV(sum_color, 255, 255); leds[cursor] = (digit & mask) ? temp_color : CRGB(0, 0, 0); cursor++; } } }
автоподстройка яркости по датчику света есть?А от чего может быть такой косяк, когда темно в помещении, может быть начаться мерцание)