|
|
@@ -114,6 +114,67 @@ layout_t create_layout() |
|
|
|
return layout; |
|
|
|
} |
|
|
|
|
|
|
|
uint8_t interpolation(int32_t arg) { |
|
|
|
int32_t i32_val = arg * 256 / 1000; |
|
|
|
uint8_t u8_val = (uint8_t)i32_val; |
|
|
|
return u8_val; |
|
|
|
} |
|
|
|
|
|
|
|
color_t temp_color(int32_t temp_raw) { |
|
|
|
color_t col = { 0 }; |
|
|
|
if (temp_raw >= 3500) |
|
|
|
col.r = 255; |
|
|
|
else if (temp_raw < 3500 && temp_raw > 2500) { |
|
|
|
int32_t diff = 3500 - temp_raw; |
|
|
|
col.r = 255; |
|
|
|
col.g = interpolation(diff); |
|
|
|
} |
|
|
|
else if (temp_raw == 2500) { |
|
|
|
col.r = 255; |
|
|
|
col.g = 255; |
|
|
|
} |
|
|
|
else if (temp_raw < 2500 && temp_raw > 1500) { |
|
|
|
int32_t diff = temp_raw - 1500; |
|
|
|
col.r = interpolation(diff); |
|
|
|
col.g = 255; |
|
|
|
} |
|
|
|
else if (temp_raw == 1500) |
|
|
|
col.g = 255; |
|
|
|
else if (temp_raw < 1500 && temp_raw > 500) { |
|
|
|
int32_t diff = 1500 - temp_raw; |
|
|
|
col.g = 255; |
|
|
|
col.b = interpolation(diff); |
|
|
|
} |
|
|
|
else if (temp_raw == 500) { |
|
|
|
col.g = 255; |
|
|
|
col.b = 255; |
|
|
|
} |
|
|
|
else if (temp_raw < 500 && temp_raw > -500) { |
|
|
|
int32_t diff = temp_raw + 500; |
|
|
|
col.g = interpolation(diff); |
|
|
|
col.b = 255; |
|
|
|
} |
|
|
|
else if (temp_raw == -500) |
|
|
|
col.b = 255; |
|
|
|
else if (temp_raw < -500 && temp_raw > -1500) { |
|
|
|
int32_t diff = -500 - temp_raw; |
|
|
|
col.r = interpolation(diff); |
|
|
|
col.b = 255; |
|
|
|
} |
|
|
|
else if (temp_raw <= -1500) { |
|
|
|
col.r = 255; |
|
|
|
col.b = 255; |
|
|
|
} |
|
|
|
return col; |
|
|
|
} |
|
|
|
|
|
|
|
int32_t last_temp_raw = 0; |
|
|
|
uint32_t last_pressure_raw = 0; |
|
|
|
uint32_t last_humidity_raw = 0; |
|
|
|
int32_t last_temp2_raw = 0; |
|
|
|
uint32_t last_pressure2_raw = 0; |
|
|
|
uint32_t last_humidity2_raw = 0; |
|
|
|
|
|
|
|
void display_data(int32_t temp_raw, uint32_t pressure_raw, uint32_t humidity_raw, |
|
|
|
int32_t temp2_raw, uint32_t pressure2_raw, uint32_t humidity2_raw) |
|
|
|
{ |
|
|
@@ -156,9 +217,9 @@ void display_data(int32_t temp_raw, uint32_t pressure_raw, uint32_t humidity_raw |
|
|
|
TFT_print("Aussen", layout.aussenLeft, layout.aussenBaseline); |
|
|
|
|
|
|
|
TFT_setFont(DEJAVU18_FONT, NULL); |
|
|
|
tft_fg = TFT_RED; |
|
|
|
tft_fg = temp_color(temp_raw); |
|
|
|
TFT_print(temp_str, layout.innenLeft, layout.tempBaseline); |
|
|
|
tft_fg = TFT_YELLOW; |
|
|
|
tft_fg = temp_color(temp2_raw); |
|
|
|
TFT_print(temp2_str, layout.aussenLeft, layout.tempBaseline); |
|
|
|
tft_fg = TFT_WHITE; |
|
|
|
TFT_print(" C", layout.unitLeft, layout.tempBaseline); |
|
|
|