OLED Display dims after 1 minute of no keyboard action. Keypress restores brightness for another minute.

Allows for user defined interval, if zero display will not dim (user adjustment to be implemented)
This commit is contained in:
rljonesau 2018-12-22 21:32:13 +11:00
parent 54fa331d23
commit e5db792179
4 changed files with 30 additions and 0 deletions

View file

@ -95,6 +95,7 @@ CScreenManager::CScreenManager()
_pDisplay = NULL;
_currentScreen = -1;
_bReqUpdate = false;
_DimTime = millis() + 60000;
}
CScreenManager::~CScreenManager()
@ -150,6 +151,15 @@ CScreenManager::begin()
bool
CScreenManager::checkUpdate()
{
if(_DimTime) {
long tDelta = millis() - _DimTime;
if(tDelta > 0) {
if(NVstore.getDimTime())
_pDisplay->dim(true);
_DimTime = 0;
}
}
if(_bReqUpdate) {
if(_currentScreen >= 0) {
_Screens[_currentScreen]->show();
@ -216,6 +226,10 @@ CScreenManager::keyHandler(uint8_t event)
{
if(_currentScreen >= 0)
_Screens[_currentScreen]->keyHandler(event);
if(_DimTime == 0)
_pDisplay->dim(false);
_DimTime = millis() + NVstore.getDimTime();
}

View file

@ -33,6 +33,7 @@ class CScreenManager {
std::vector<CScreen*> _Screens;
C128x64_OLED* _pDisplay;
int _currentScreen;
unsigned long _DimTime;
bool _bReqUpdate;
void _switchScreen();
public:

View file

@ -34,6 +34,7 @@ sNVStore::valid()
retval &= (timer[i].stop.min >= 0 && timer[i].stop.min < 60);
retval &= timer[i].repeat < 2;
}
retval &= (DimTime >= 0) && (DimTime < 300000); // 5 mins
retval &= Heater.Pmin < 100;
retval &= Heater.Pmax < 150;
retval &= Heater.Fmin < 5000;
@ -54,6 +55,7 @@ sNVStore::init()
timer[i].enabled = 0;
timer[i].repeat = 0;
}
DimTime = 60000; // 1 minute
Heater.Pmin = 14;
Heater.Pmax = 45;
Heater.Fmin = 1500;
@ -162,7 +164,17 @@ CHeaterStorage::setTimerInfo(int idx, const sTimer& timerInfo)
}
}
unsigned long
CHeaterStorage::getDimTime()
{
return _calValues.DimTime;
}
void
CHeaterStorage::setDimTime(unsigned long val)
{
_calValues.DimTime = val;
}
///////////////////////////////////////////////////////////////////////////////////////
// ESP32

View file

@ -64,6 +64,7 @@ struct sTimer {
// the actual data stored to NV memory
struct sNVStore {
sHeater Heater;
long DimTime;
sTimer timer[2];
bool valid();
void init();
@ -100,6 +101,7 @@ public:
unsigned short getFmax();
unsigned char getDesiredTemperature();
unsigned char getThermostatMode();
unsigned long getDimTime();
void setPmin(float);
void setPmax(float);
@ -107,6 +109,7 @@ public:
void setFmax(unsigned short val);
void setDesiredTemperature(unsigned char val);
void setThermostatMode(unsigned char val);
void setDimTime(unsigned long val);
void getTimerInfo(int idx, sTimer& timerInfo);
void setTimerInfo(int idx, const sTimer& timerInfo);