12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- //Initialize the values of white mode to default runtime
- void loadWhiteModeDefault() {
- values[0] = 5000; //5000K
- values[1] = MAX_BRIGHTNESS / 2; //Half power
- values[2] = 0;
- adjustingCatergory = 0;
- setColorTemperature(5000, MAX_BRIGHTNESS / 2);
- //Set ctrl LED to low brightness white
- setControlLEDColor(MAX_CTRLBRIGHTNESS, MAX_CTRLBRIGHTNESS, MAX_CTRLBRIGHTNESS);
- }
- //Set color temperature set the LED RGB Values based on given temperature K value and brigheness level (0 - 255)
- void setColorTemperature(int temperatureK, int brightnessLevel) {
- // Check if brightness is within the valid range [0, 1]
- if (brightnessLevel > MAX_BRIGHTNESS) {
- brightnessLevel = MAX_BRIGHTNESS;
- } else if (brightnessLevel < 0) {
- brightnessLevel = 0;
- }
- //Normalize the brightness value
- double brightness = float(brightnessLevel) / 255.0;
- double normalizedTemperature = (log(temperatureK) - 8.79) / 1.8;
- int red = 0;
- int green = 0;
- int blue = 0;
- normalizedTemperature = constrain(normalizedTemperature, -1.0, 1.0);
- //Handle Red and Green channels
- if (normalizedTemperature <= 0) {
- red = 255;
- green = int(255 * (-0.402 * normalizedTemperature * normalizedTemperature * normalizedTemperature - 0.211 * normalizedTemperature * normalizedTemperature + 1.09 * normalizedTemperature + 0.958));
- } else {
- red = int(255 * (-0.990 * normalizedTemperature * normalizedTemperature * normalizedTemperature + 2.34 * normalizedTemperature * normalizedTemperature - 1.99 * normalizedTemperature + 0.970));
- green = int(255 * (-0.542 * normalizedTemperature * normalizedTemperature * normalizedTemperature + 1.37 * normalizedTemperature * normalizedTemperature - 1.28 * normalizedTemperature + 0.941));
- }
- //Blue channel
- if (normalizedTemperature <= -0.7) {
- blue = int(0);
- } else if (normalizedTemperature <= 0.0) {
- blue = int(255 * (0.0117 * normalizedTemperature * normalizedTemperature * normalizedTemperature + 2.05 * normalizedTemperature * normalizedTemperature + 2.85 * normalizedTemperature + 1.00));
- } else {
- blue = int(255 * (1.0));
- }
- //Scale it down to target brightness level
- red = red * brightness;
- green = green * brightness;
- blue = blue * brightness;
- //Make sure non of the values goes over 255
- if (red > 255){
- red = 255;
- }
- //Green usually wont go over 255
- if (blue > 255){
- blue = 255;
- }
- Serial.println(red);
- Serial.println(green);
- Serial.println(blue);
- //Set all the LEDs to desired color temperature
- setLightColor(red, green, blue);
- }
|