Fix display rotation with skip
This commit is contained in:
parent
29e46d526c
commit
32256bf77a
|
@ -249,7 +249,7 @@ void display_screen_graph(float values[100])
|
||||||
logPrintD("Display graph...");
|
logPrintD("Display graph...");
|
||||||
display.firstPage();
|
display.firstPage();
|
||||||
do {
|
do {
|
||||||
display_header("Graph");
|
display_header((char*)"Graph");
|
||||||
display.drawLine(8, 27, 127, 27);
|
display.drawLine(8, 27, 127, 27);
|
||||||
display.drawLine(8, 10, 8, 27);
|
display.drawLine(8, 10, 8, 27);
|
||||||
display.drawStr(18,53, "0");
|
display.drawStr(18,53, "0");
|
||||||
|
|
82
src/main.cpp
82
src/main.cpp
|
@ -95,6 +95,8 @@ bool display_conf_dc_pvcharger_present = false;
|
||||||
bool display_conf_graph_pv_present = false;
|
bool display_conf_graph_pv_present = false;
|
||||||
bool display_conf_statistics_present = false;
|
bool display_conf_statistics_present = false;
|
||||||
float display_graph_power[100] = { 0 };
|
float display_graph_power[100] = { 0 };
|
||||||
|
int display_refresh_counter = 0;
|
||||||
|
int display_refresh_time;
|
||||||
|
|
||||||
//WiFiManager flag for saving data
|
//WiFiManager flag for saving data
|
||||||
bool shouldSaveConfig = false;
|
bool shouldSaveConfig = false;
|
||||||
|
@ -435,6 +437,7 @@ void setup() {
|
||||||
|
|
||||||
DISPLAY_REFRESH_INTERVAL = strtol(disp_refresh_interval, NULL, 10);
|
DISPLAY_REFRESH_INTERVAL = strtol(disp_refresh_interval, NULL, 10);
|
||||||
DISPLAY_SCREEN_INTERVAL = strtol(disp_screen_interval, NULL, 10);
|
DISPLAY_SCREEN_INTERVAL = strtol(disp_screen_interval, NULL, 10);
|
||||||
|
display_refresh_time = DISPLAY_SCREEN_INTERVAL / DISPLAY_REFRESH_INTERVAL;
|
||||||
|
|
||||||
//parse config and set display parameter
|
//parse config and set display parameter
|
||||||
if (strtol(address_outside_temperature, NULL, 10) != 0)
|
if (strtol(address_outside_temperature, NULL, 10) != 0)
|
||||||
|
@ -606,21 +609,53 @@ void loop() {
|
||||||
digitalWrite(STATUS_LED, LOW); //Turn Status LED ON again
|
digitalWrite(STATUS_LED, LOW); //Turn Status LED ON again
|
||||||
lastDispRefreshTime += DISPLAY_REFRESH_INTERVAL;
|
lastDispRefreshTime += DISPLAY_REFRESH_INTERVAL;
|
||||||
|
|
||||||
if (display_screen == 0) {
|
if (display_refresh_counter <= display_refresh_time)
|
||||||
|
{
|
||||||
display_screen_grid(grid_p, inv_p, inv_i, pv_w);
|
display_screen_grid(grid_p, inv_p, inv_i, pv_w);
|
||||||
}
|
}
|
||||||
if (display_screen == 1) {
|
if (display_refresh_counter >= display_refresh_time && display_refresh_counter <= (display_refresh_time*2))
|
||||||
|
{
|
||||||
display_screen_battery(batt_v, batt_i, batt_p, batt_soc, batt_c_min, batt_c_max);
|
display_screen_battery(batt_v, batt_i, batt_p, batt_soc, batt_c_min, batt_c_max);
|
||||||
}
|
}
|
||||||
if (display_screen == 2 && display_conf_dc_pvcharger_present) {
|
if (display_refresh_counter >= (display_refresh_time*2) && display_refresh_counter <= (display_refresh_time*3))
|
||||||
display_screen_pv(pv_v, pv_w, batt_v, pv_i, pv_kwh);
|
{
|
||||||
} else {display_screen++;}
|
if (display_conf_dc_pvcharger_present)
|
||||||
if (display_screen == 3 && display_conf_graph_pv_present) {
|
{
|
||||||
display_screen_graph(display_graph_power[100]);
|
display_screen_pv(pv_v, pv_w, batt_v, pv_i, pv_kwh);
|
||||||
} else {display_screen++;}
|
}
|
||||||
if (display_screen == 4 && display_conf_statistics_present) {
|
else
|
||||||
//To Do: display_screen_statistics(mqtt_grid_power_l1, mqtt_grid_power_l2, mqtt_grid_power_l3);
|
{
|
||||||
} else {display_screen++;}
|
display_refresh_counter = (display_refresh_time*3) + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (display_refresh_counter >= (display_refresh_time*3) && display_refresh_counter <= (display_refresh_time*4))
|
||||||
|
{
|
||||||
|
if (display_conf_graph_pv_present)
|
||||||
|
{
|
||||||
|
display_screen_graph(display_graph_power);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
display_refresh_counter = (display_refresh_time*4) + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (display_refresh_counter >= (display_refresh_time*4) && display_refresh_counter <= (display_refresh_time*5))
|
||||||
|
{
|
||||||
|
if (display_conf_statistics_present)
|
||||||
|
{
|
||||||
|
//To Do: display_screen_statistics(mqtt_grid_power_l1, mqtt_grid_power_l2, mqtt_grid_power_l3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
display_refresh_counter = (display_refresh_time*5) + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
display_refresh_counter++;
|
||||||
|
if (display_refresh_counter > (display_refresh_time*5))
|
||||||
|
{
|
||||||
|
display_refresh_counter = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Change screen after time if intervall setting not zero
|
//Change screen after time if intervall setting not zero
|
||||||
|
@ -629,38 +664,19 @@ void loop() {
|
||||||
if(millis() - lastScreenChangeTime >= DISPLAY_SCREEN_INTERVAL)
|
if(millis() - lastScreenChangeTime >= DISPLAY_SCREEN_INTERVAL)
|
||||||
{
|
{
|
||||||
time(&now); localtime_r(&now, &tm); //Get local time
|
time(&now); localtime_r(&now, &tm); //Get local time
|
||||||
|
|
||||||
display_time(tm.tm_hour, tm.tm_min);
|
display_time(tm.tm_hour, tm.tm_min);
|
||||||
|
|
||||||
display_screen++;
|
|
||||||
|
|
||||||
lastScreenChangeTime += DISPLAY_SCREEN_INTERVAL;
|
lastScreenChangeTime += DISPLAY_SCREEN_INTERVAL;
|
||||||
|
|
||||||
if (display_screen == 6)
|
|
||||||
{
|
|
||||||
display_screen = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
//Rotate screen if BUTTON_ROTATION is pressed
|
//Rotate screen if BUTTON_ROTATION is pressed
|
||||||
currentButtonRotationState = digitalRead(BUTTON_ROTATION);
|
currentButtonRotationState = digitalRead(BUTTON_ROTATION);
|
||||||
if(lastButtonRotationState == HIGH && currentButtonRotationState == LOW)
|
if(lastButtonRotationState == HIGH && currentButtonRotationState == LOW)
|
||||||
{
|
{
|
||||||
display_screen++;
|
display_screen++;
|
||||||
if (display_screen == display_last_screen + 1)
|
lastButtonRotationState = currentButtonRotationState;
|
||||||
{
|
|
||||||
//If no pv power generated, skip PV charger screen
|
|
||||||
if (pv_kwh == 0)
|
|
||||||
{
|
|
||||||
display_screen = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
display_screen = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
lastButtonRotationState = currentButtonRotationState;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!client.connected()) {
|
if (!client.connected()) {
|
||||||
|
|
Loading…
Reference in a new issue