This code will With following script I want to change 3 modes colored LEDs. I want to swicht with a 3 positionswitch on my futaba radiocontrol. De first 2 positions of the switch color the LED's RED, the last position green. In the middle position LEDs should mainly color blue. Can you help me find the error and correct it. Can you give me the full corrected version. #include <FastLED.h> 
#define LED_PIN 6
#define COLOR_ORDER GRB
#define CHIPSET WS2811
#define NUM_LEDS 30

#define BRIGHTNESS 100
#define FRAMES_PER_SECOND 60

CRGB leds[NUM_LEDS];

CRGBPalette16 gPal;

// Futaba RC Receiver variables
#define RC_PIN A0
#define RC_MIN 1000
#define RC_MAX 2000
#define RC_MID 1500
#define RC_DEADZONE 100

int currentPalette = 0;
int prevRCValue = RC_MID;

void setup() {
    delay(3000); // sanity delay
    FastLED.addLeds<CHIPSET, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
    FastLED.setBrightness(BRIGHTNESS);

    gPal = CRGBPalette16(CRGB::Red, CRGB::Blue, CRGB::Green, CRGB::Yellow);
}

void loop() {
    // Read RC receiver value
    int rcValue = pulseIn(RC_PIN, HIGH, 25000);
    rcValue = constrain(rcValue, RC_MIN, RC_MAX);

    // Check if RC receiver value is within the deadzone
    if (abs(rcValue - RC_MID) < RC_DEADZONE) {
        rcValue = RC_MID;
    }

    // Toggle color mode based on RC receiver value
    if (rcValue < RC_MID && prevRCValue >= RC_MID) {
        currentPalette--;
        if (currentPalette < 0) {
            currentPalette = 2;
        }
    } else if (rcValue >= RC_MID && prevRCValue < RC_MID) {
        currentPalette++;
        if (currentPalette > 2) {
            currentPalette = 0;
        }
    }

    prevRCValue = rcValue;

    // Update palette based on currentPalette variable
    switch (currentPalette) {
        case 0:
            gPal = CRGBPalette16(CRGB::Red, CRGB::Blue, CRGB::Green, CRGB::Yellow);
            break;
        case 1:
            gPal = CRGBPalette16(CRGB::Aqua, CRGB::Blue, CRGB::Aqua, CRGB::White);
            break;
        case 2:
            gPal = CRGBPalette16(CRGB::Green, CRGB::Green, CRGB::Yellow);
            break;
    }

    Fire2012WithPalette(); // run simulation frame, using palette colors

    FastLED.show(); // display this frame
    FastLED.delay(1000 / FRAMES_PER_SECOND);
}

#define COOLING 55
#define SPARKING 120
#define FALLING 50

//********************************************************************************************//
// PLAY WITH FALLING, COOLING AND SPARKLING

void Fire2012WithPalette() {
    // Array of temperature readings at each simulation cell
    static uint8_t heat[NUM_LEDS];

    // Step 1. Cool down every cell a little
    for (int i = 0; i < NUM_LEDS; i++) {
        heat[i] = qsub8(heat[i], random8(0, ((COOLING * 10) / NUM_LEDS) + 2));
    }

    // Step 2. Heat from each cell drifts ‘up’ and diffuses a little
    for (int k = NUM_LEDS - 1; k >= 2; k--) {
        heat[k] = (heat[k - 1] + heat[k - 2] + heat[k - 2]) / 3;
    }

    // Step 3. Randomly ignite new ‘sparks’ of heat near the bottom
    if (random8() < FALLING) {
        int y = random8(7);
        heat[y] = qadd8(heat[y], random8(160, 255));
    }

    // Step 4. Map from heat cells to LED colors
    for (int j = 0; j < NUM_LEDS; j++) {
        // Scale the heat value from 0-255 down to 0-240
        // for best results with color palettes.
        uint8_t colorindex = scale8(heat[j], 240);
        CRGB color = ColorFromPalette(gPal, colorindex);
        leds[j] = color;
    }
}