implemented adaptive brightness
This commit is contained in:
parent
790a09f255
commit
46fcc4d63c
@ -3,18 +3,27 @@
|
|||||||
LightMux::LightMux()
|
LightMux::LightMux()
|
||||||
{
|
{
|
||||||
temperatur = warmest_temperature;
|
temperatur = warmest_temperature;
|
||||||
brightness = 50;
|
brightness = 100;
|
||||||
power_cold = 0;
|
power_cold = 0;
|
||||||
power_warm = 0;
|
power_warm = 0;
|
||||||
power_combined = 0;
|
power_combined = 0;
|
||||||
|
adaptive_brightness = false;
|
||||||
|
fullCommonColor = ((warmest_temperature + coldest_temperature) / 2);
|
||||||
|
qDebug("full common color: %i\n", fullCommonColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LightMux::mux(){
|
void LightMux::mux(){
|
||||||
|
if(adaptive_brightness == true){
|
||||||
|
qDebug("adaptiv\n");
|
||||||
|
mux_adaptiv();
|
||||||
|
} else {
|
||||||
|
qDebug("linear\n");
|
||||||
|
mux_linear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int fullCommonColor = ((warmest_temperature + coldest_temperature) / 2);
|
void LightMux::mux_linear() {
|
||||||
|
|
||||||
qDebug("full common color: %i\n", fullCommonColor);
|
|
||||||
|
|
||||||
if(temperatur == fullCommonColor){
|
if(temperatur == fullCommonColor){
|
||||||
qDebug("same as full common color\n");
|
qDebug("same as full common color\n");
|
||||||
@ -50,6 +59,44 @@ void LightMux::mux(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void LightMux::mux_adaptiv(){
|
||||||
|
|
||||||
|
if(temperatur == fullCommonColor){
|
||||||
|
qDebug("same as full common color\n");
|
||||||
|
power_cold = 50;
|
||||||
|
power_warm = 50;
|
||||||
|
} else if(temperatur < fullCommonColor) {
|
||||||
|
qDebug("lower as full common color\n");
|
||||||
|
// warm led dominant
|
||||||
|
// cold led recessive
|
||||||
|
|
||||||
|
double a = double((temperatur) - (warmest_temperature));
|
||||||
|
double b = double((-warmest_temperature + coldest_temperature));
|
||||||
|
double c = a / b * 100;
|
||||||
|
power_cold = static_cast<int>(c + .5);
|
||||||
|
power_warm = 100 - power_cold;
|
||||||
|
} else if(temperatur > fullCommonColor) {
|
||||||
|
qDebug("higher as full common color\n");
|
||||||
|
// cold led dominant
|
||||||
|
// warm led recessive
|
||||||
|
|
||||||
|
double a = double((temperatur) - (coldest_temperature));
|
||||||
|
double b = double((-coldest_temperature + warmest_temperature));
|
||||||
|
double c = a / b * 100;
|
||||||
|
power_warm = static_cast<int>(c + .5);
|
||||||
|
power_cold = 100 - power_warm;
|
||||||
|
}
|
||||||
|
|
||||||
|
power_cold = static_cast<int>(double(power_cold * (double(brightness/100.0))) + .5);
|
||||||
|
power_warm = static_cast<int>(double(power_warm * (double(brightness/100.0))) + .5);
|
||||||
|
|
||||||
|
qDebug("cold color: %i\nwarm color: %i\n", power_cold, power_warm);
|
||||||
|
|
||||||
|
power_combined = static_cast<int>(double(power_cold+power_warm) / 2.0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void LightMux::decBrightness(){
|
void LightMux::decBrightness(){
|
||||||
brightness--;
|
brightness--;
|
||||||
if(brightness < 0){
|
if(brightness < 0){
|
||||||
|
@ -17,6 +17,8 @@ private:
|
|||||||
int power_warm; // power of the warm LEDs of Panels in percent
|
int power_warm; // power of the warm LEDs of Panels in percent
|
||||||
int power_combined; //combined power of both LEDs in percent
|
int power_combined; //combined power of both LEDs in percent
|
||||||
|
|
||||||
|
int fullCommonColor; // color mix with both LED´s at same brightess
|
||||||
|
|
||||||
bool adaptive_brightness; // true indecates adaptive brightness is enabled
|
bool adaptive_brightness; // true indecates adaptive brightness is enabled
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -48,6 +50,9 @@ public:
|
|||||||
|
|
||||||
void toogleAdaptiveBrightness();
|
void toogleAdaptiveBrightness();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void mux_linear(); // brightness will vary by different color temperature
|
||||||
|
void mux_adaptiv(); // same brightness by different color temperature
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // LIGHTMUX_H
|
#endif // LIGHTMUX_H
|
||||||
|
@ -114,4 +114,6 @@ void MainWindow::on_lineTemperature_returnPressed()
|
|||||||
void MainWindow::on_checkBox_stateChanged()
|
void MainWindow::on_checkBox_stateChanged()
|
||||||
{
|
{
|
||||||
lmux->toogleAdaptiveBrightness();
|
lmux->toogleAdaptiveBrightness();
|
||||||
|
lmux->mux();
|
||||||
|
updateUI();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user