improve steedinfodisplay

This commit is contained in:
Peter Poetzi
2022-06-16 21:11:42 +02:00
committed by CommanderRedYT
parent 756c8bde94
commit 647365c5fc
2 changed files with 37 additions and 7 deletions

View File

@ -8,6 +8,7 @@
#include "displays/batteryinfodisplay.h"
#include "displays/menus/mainmenu.h"
#include "displays/statusdisplay.h"
#include "drivingstatistics.h"
void SpeedInfoDisplay::initScreen()
{
@ -28,14 +29,38 @@ void SpeedInfoDisplay::redraw()
tft.setTextColor(TFT_WHITE, TFT_BLACK);
tft.setTextFont(4);
tft.setTextSize(3);
tft.setTextSize(4);
m_labelSpeed.redraw(fmt::format(avgSpeedKmh < 10 ? "{:.3f}" : "{:.1f}", avgSpeedKmh));
m_labelSpeed.redraw(fmt::format(
std::abs(avgSpeedKmh) < 10 ? "{:.2f}" :
(std::abs(avgSpeedKmh) < 100 ? "{:.1f}" : "{:.0f}"),
avgSpeedKmh));
tft.setTextSize(1);
m_batteryPercentLabel.redraw(getBatteryPercentageString());
if (const auto avgVoltage = controllers.getAvgVoltage(); avgVoltage) {
auto watt = sumCurrent * *avgVoltage;
auto wh_per_km = std::abs(avgSpeedKmh) > 0.1 ? watt / std::abs(avgSpeedKmh) : 0;
m_voltageLabel.redraw(fmt::format("{:.1f} V", avgVoltage.value()));
m_currentConsumptionLabel.redraw(fmt::format("{:.1f} Wh/km", wh_per_km));
} else {
m_voltageLabel.redraw("No voltage");
m_currentConsumptionLabel.redraw("No comsumption");
}
m_distanceLabel.redraw(fmt::format(
drivingStatistics.meters_driven > 1000 ? "{:.3f} km" :
(drivingStatistics.meters_driven > 100 ? "{:.1f} m" : "{:.2f} m"),
drivingStatistics.meters_driven > 1000 ?
drivingStatistics.meters_driven / 1000 :
drivingStatistics.meters_driven));
tft.setTextSize(1);
m_dischargingBar.redraw(sumCurrent<0.f?(-sumCurrent):0.f);
m_chargingBar.redraw(sumCurrent>0.f?sumCurrent:0.f);
m_dischargingBar.redraw(sumCurrent < 0.f ? (-sumCurrent) : 0.f);
m_chargingBar.redraw(sumCurrent > 0.f ? sumCurrent : 0.f);
}
void SpeedInfoDisplay::buttonPressed(espgui::Button button)

View File

@ -19,8 +19,13 @@ public:
void buttonPressed(espgui::Button button) override;
private:
espgui::Label m_labelSpeed{28, 70};
espgui::Label m_labelSpeed{5, 5};
espgui::ReverseProgressBar m_dischargingBar{10, 155, espgui::tft.width()/2 - 10, 25, 0, 40, TFT_GREEN};
espgui::ProgressBar m_chargingBar{espgui::tft.width()/2, 155, espgui::tft.width()/2 - 10, 25, 0, 40, TFT_RED};
espgui::ReverseProgressBar m_dischargingBar{10, 110, espgui::tft.width()/2 - 10, 25, 0, 40, TFT_GREEN};
espgui::ProgressBar m_chargingBar{espgui::tft.width()/2, 110, espgui::tft.width()/2 - 10, 25, 0, 40, TFT_RED};
espgui::Label m_batteryPercentLabel{5, 150};
espgui::Label m_voltageLabel{5, 190};
espgui::Label m_distanceLabel{5, 230};
espgui::Label m_currentConsumptionLabel{5, 270};
};