mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
101 lines
2.6 KiB
C++
101 lines
2.6 KiB
C++
#pragma once
|
|
//
|
|
// FILE: Kelvin2RGB.h
|
|
// AUTHOR: Rob Tillaart
|
|
// VERSION: 0.1.6
|
|
// DATE: 2018-01-31
|
|
// PURPOSE: Arduino library for converting temperature to RGB values
|
|
// URL: https://github.com/RobTillaart/Kelvin2RGB
|
|
|
|
|
|
#define KELVIN2RGB_LIB_VERSION (F("0.1.6"))
|
|
|
|
#include "Arduino.h"
|
|
|
|
|
|
//
|
|
// Based upon article Tanner Helland and Neil Bartlett
|
|
// http://www.tannerhelland.com/4435/convert-temperature-rgb-algorithm-code/
|
|
// http://www.zombieprototypes.com/?p=210
|
|
// https://en.wikipedia.org/wiki/Color_temperature#Categorizing_different_lighting
|
|
//
|
|
//
|
|
// based on https://en.wikipedia.org/wiki/Color_temperature#Categorizing_different_lighting
|
|
//
|
|
// DAY LIGHT SETTING TEMPERATURE
|
|
//
|
|
#define DLS_dark 0
|
|
#define DLS_match 1700
|
|
#define DLS_sodiumLamp 1700
|
|
#define DLS_candleFlame 1850
|
|
#define DLS_sunrise 1850
|
|
#define DLS_sunset 1850
|
|
#define DLS_bulb 2400
|
|
#define DLS_bulbSoftWhite 2550
|
|
#define DLS_LEDlamp 2700
|
|
#define DLS_warmWhite 3000
|
|
#define DLS_studioLight 3200
|
|
#define DLS_studioCPlight 3350
|
|
#define DLS_daylightHorizon 5000
|
|
#define DLS_flashLight 5700
|
|
#define DLS_xenonLight 6200
|
|
#define DLS_dayLightBright 6500
|
|
#define DLS_normal 6500
|
|
#define DLS_screenlow 6500
|
|
#define DLS_screenMed 8000
|
|
#define DLS_screenHigh 9500
|
|
#define DLS_polewardSky0 15000
|
|
#define DLS_polewardSky1 19000
|
|
#define DLS_polewardSky2 23000
|
|
#define DLS_polewardSky3 27000
|
|
|
|
|
|
|
|
class Kelvin2RGB
|
|
{
|
|
public:
|
|
Kelvin2RGB();
|
|
|
|
void begin(); // empty function for now, remove?
|
|
void reset();
|
|
|
|
// temperature = 0..65500 brightness = 0.0 .. 100.0%
|
|
void convert_TH(float temperature, float brightness = 100.0);
|
|
void convert_NB(float temperature, float brightness = 100.0);
|
|
|
|
float temperature();
|
|
float brightness();;
|
|
|
|
// returns 0.0 .. 1.0
|
|
float red();
|
|
float green();
|
|
float blue();
|
|
|
|
// red, green, blue should be in 0 .. 1.0 range
|
|
// brightness should be in 0..100%, Default = 100%,
|
|
// returns RGB.
|
|
uint32_t setRGB(float red, float green, float blue, float brightness = 100.0);
|
|
|
|
uint32_t RGB(); // 32 bit colour (only 3 bytes used)
|
|
uint16_t RGB565(); // 16 bit colour
|
|
|
|
// Experimental 0.1.3
|
|
uint32_t CMYK();
|
|
uint32_t BGR();
|
|
|
|
|
|
private:
|
|
void _normalize();
|
|
|
|
float _temperature = 0;
|
|
float _brightness = 0;
|
|
float _red = 0;
|
|
float _green = 0;
|
|
float _blue = 0;
|
|
uint32_t _rgb = 0;
|
|
};
|
|
|
|
|
|
// -- END OF FILE --
|
|
|