// #define FASTLED_ESP32_I2S true

#include <FastLED.h>
#include "fx.h"

#define NUM_LEDS 25
#define MESH_LEDS NUM_LEDS * 3

CRGB leds_ring1[NUM_LEDS + 1];
CRGB leds_ring2[NUM_LEDS + 1];
CRGB leds_ring3[NUM_LEDS + 1];
CRGB leds_ring4[MESH_LEDS + 1];
CRGB meshLeds[MESH_LEDS];

FX fx(meshLeds, MESH_LEDS);

void setup() {
  Serial.begin(115200);
  FastLED.addLeds<NEOPIXEL, 5>(leds_ring1, NUM_LEDS);
  FastLED.addLeds<NEOPIXEL, 18>(leds_ring2, NUM_LEDS);
  FastLED.addLeds<NEOPIXEL, 19>(leds_ring3, NUM_LEDS);
  FastLED.addLeds<NEOPIXEL, 21>(leds_ring4, MESH_LEDS);
}

void loop()
{
  fx.spin();
  memcpy( &leds_ring1, &meshLeds[0*NUM_LEDS], sizeof(CRGB)*NUM_LEDS ); 
  memcpy( &leds_ring2, &meshLeds[1*NUM_LEDS], sizeof(CRGB)*NUM_LEDS ); 
  memcpy( &leds_ring3, &meshLeds[2*NUM_LEDS], sizeof(CRGB)*NUM_LEDS );
  memcpy( &leds_ring4, &meshLeds[0], sizeof(CRGB)*MESH_LEDS );
  FastLED.show();
}
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
neopixels-ring1:GND
neopixels-ring1:VCC
neopixels-ring1:DIN
neopixels-ring1:DOUT
neopixels-ring2:GND
neopixels-ring2:VCC
neopixels-ring2:DIN
neopixels-ring2:DOUT
neopixels-ring3:GND
neopixels-ring3:VCC
neopixels-ring3:DIN
neopixels-ring3:DOUT
neopixels-ring4:GND
neopixels-ring4:VCC
neopixels-ring4:DIN
neopixels-ring4:DOUT