     return range;
 }
 
+/* modeTemperature draws a solid color across all LEDs, according to color temperature. */
+void modeTemperature() {
+    bool *range;
+
+    range = animatedLEDs();
+    fillSolid(range, HeatColor(parameters[PARAMETER_HUE]));
+
+    FastLED.setBrightness(parameters[PARAMETER_VALUE]);
+}
+
 /* modeSolid draws a solid color across all LEDs, according to the parameters
  * HUE, SATURATION, VALUE. */
 void modeSolid() {

    return rval;
}

/* modeTemperature draws a solid color across all LEDs, according to color temperature. */
void modeTemperature() {
    fill_solid(&leds[0], NUM_LEDS, HeatColor(parameters[PARAMETER_HUE]));
    FastLED.setBrightness(parameters[PARAMETER_VALUE]);
}

/* ledRange returns a array of bools indicating which LEDs should be drawn,
 * according to the start and end parameters. This function differs from the
 * FastLED library function in the sense that end may be smaller than start. */

    static uint8_t animation_hue = 0;
    uint8_t hue;
    uint8_t step;
    uint8_t steps = 0;
    bool animated;
    bool *range;

    range = animatedLEDs(&animated);

    /* Increment the color wheel so that it matches the number of visible LEDs */
    step = 255 / parameters[PARAMETER_SIZE];

    /* Black out all LEDs */
    fill_solid(&leds[0], NUM_LEDS, CRGB::Black);

    for (uint8_t led = 0; led < NUM_LEDS; led++) {
        if (!range[led]) {
            continue;
        }
        hue = animation_hue + parameters[PARAMETER_HUE] + (steps++ * step);
        leds[led] = CHSV(hue, parameters[PARAMETER_SATURATION], parameters[PARAMETER_VALUE]);
    }

    if (animated) {
        animation_hue++;
    }
}

/* Check if rotary wheel changed, and adjust active parameter */
