RGB полоса

Помогите рассчитать RGB полосу, хотелось бы получить что-то подобное этой
image
Но получается ерунда.

uint16_t R = 0, G = 0, B = 0, RX = 1, GX = 1, BX = 1;
  for(uint16_t X = 0; X < 250; ++X)
  {
    R = 30 * RX;
    ++RX;
    if (R > 250)
    {
      G = 30 * GX;
      ++GX;
      RX = 0;
    }
    if (G > 250)
    {
      B = 30 * BX;
      ++BX;
      GX = 0;
    }
    tft.drawPixel(X, 30, RGB_TO_RGB16(R, G, B));
  }

  uint16_t RGB_TO_RGB16(uint8_t R, uint8_t G, uint8_t B)                
  {
    return ((R & 0xF8)<<8) | ((G & 0xFC)<<3) | ((B & 0xF8)>>3);
  }

используй HUE вместо RGB

2 лайка

Спасибо за идею.

Про HUE всё верно, только опять же работать c R,G,B. Вам надо понять логику их изменения при движении по кругу:

Проблем нет, гуглим “hue на ардуино” и получаешь график


По нему видно, как нужно посчитать RGB:
Вот мой градиент:

1 лайк

А про что тогда вопрос был?

Это завсегда полезно!