#include <Octagon.h>

Octagon *octagon;

void setup() {
  octagon = new Octagon;
}

void ocg_loop() {
    // Красный
    for (int nColor = 0; nColor < 255; nColor +=50){
      FillAllLed(nColor,0,0);
    }

    // Оранжевый
    for (int nColor = 0; nColor < 255; nColor +=50){
      FillAllLed(255,nColor,0);
    }

   // Зеленый
    for (int nColor = 0; nColor < 255; nColor +=50){
      FillAllLed(255-nColor,255,0);
    }

    // Голубой
    for (int nColor = 0; nColor < 255; nColor +=50){
      FillAllLed(0,255,nColor);
    }

    // Cиний
    for (int nColor = 0; nColor < 255; nColor +=50){
      FillAllLed(0,255-nColor,255);
    }

    // Фиолетовый
    for (int nColor = 0; nColor < 255; nColor +=50){
      FillAllLed(nColor,0,255);
    }
     
}

void FillAllLed(uint8_t R, uint8_t G, uint8_t B){
  octagon->RGBcircle_LEDS_COLORS[0] = {R,G,B};

  // Сохранили цвет последнего светика
    RGBcircle_Color Color = octagon->RGBcircle_LEDS_COLORS[11];

    // Перезаписываем цвет из каждого светодиода в следующий
    for (byte i=11; i > 0; i--){
      octagon->RGBcircle_LEDS_COLORS[i] = octagon->RGBcircle_LEDS_COLORS[i-1];
    }

    // В первый записываем цвет последнего
    octagon->RGBcircle_LEDS_COLORS[0] = Color;

    // Отобразить массив цветов
    octagon->updateGRBcircle();
    delay(40);
}