Add power options

Can deep sleep or just turn off the screen and keep tuner alive.
This commit is contained in:
kevin
2023-07-05 17:06:40 +08:00
parent 2b128b6f70
commit 45cc7f159f
2 changed files with 87 additions and 20 deletions
+50 -10
View File
@@ -114,6 +114,7 @@ byte SNR;
byte SNRold; byte SNRold;
byte specialstepOIRT; byte specialstepOIRT;
byte stepsize; byte stepsize;
byte deepsleep;
byte StereoLevel; byte StereoLevel;
byte subnetclient; byte subnetclient;
byte TEF; byte TEF;
@@ -235,7 +236,7 @@ WiFiUDP Udp;
void setup() { void setup() {
setupmode = true; setupmode = true;
EEPROM.begin(259); EEPROM.begin(260);
if (EEPROM.readByte(43) != 28) DefaultSettings(); if (EEPROM.readByte(43) != 28) DefaultSettings();
frequency = EEPROM.readUInt(0); frequency = EEPROM.readUInt(0);
@@ -286,6 +287,7 @@ void setup() {
LowEdgeOIRTSet = EEPROM.readUInt(250); LowEdgeOIRTSet = EEPROM.readUInt(250);
HighEdgeOIRTSet = EEPROM.readUInt(254); HighEdgeOIRTSet = EEPROM.readUInt(254);
colorinvert = EEPROM.readByte(258); colorinvert = EEPROM.readByte(258);
deepsleep = EEPROM.readByte(259);
LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN; // later will read from flash LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN; // later will read from flash
LWHighEdgeSet = FREQ_LW_HIGH_EDGE_MAX; // later will read from flash LWHighEdgeSet = FREQ_LW_HIGH_EDGE_MAX; // later will read from flash
@@ -691,6 +693,26 @@ void GetData() {
} }
} }
void SleepWake(bool isSleep) {
if (isSleep) {
power = false;
analogWrite(SMETERPIN, 0);
analogWrite(CONTRASTPIN, 0);
StoreFrequency();
if (deepsleep) radio.power(1);
}else {
if (deepsleep) {
ESP.restart();
}
else {
power = true;
pinMode (STANDBYLED, OUTPUT);
digitalWrite(STANDBYLED, LOW);
analogWrite(CONTRASTPIN, ContrastSet * 2 + 27);
}
}
}
void PWRButtonPress() { void PWRButtonPress() {
if (menu == false) { if (menu == false) {
unsigned long counterold = millis(); unsigned long counterold = millis();
@@ -699,7 +721,7 @@ void PWRButtonPress() {
if (counter - counterold < 1000) { if (counter - counterold < 1000) {
if (power == false) { if (power == false) {
ESP.restart(); SleepWake(false); // Wake up
} else { } else {
if (tunemode != TUNE_MEM) { if (tunemode != TUNE_MEM) {
if (band == BAND_FM) { if (band == BAND_FM) {
@@ -715,15 +737,9 @@ void PWRButtonPress() {
} }
} else { } else {
if (power == false) { if (power == false) {
ESP.restart(); SleepWake(false); // Wake up
} else { } else {
power = false; SleepWake(true); // Sleep
analogWrite(SMETERPIN, 0);
analogWrite(CONTRASTPIN, 0);
pinMode (STANDBYLED, OUTPUT);
digitalWrite(STANDBYLED, LOW);
StoreFrequency();
radio.power(1);
} }
} }
while (digitalRead(PWRBUTTON) == LOW) delay(50); while (digitalRead(PWRBUTTON) == LOW) delay(50);
@@ -1274,6 +1290,7 @@ void ModeButtonPress() {
EEPROM.writeUInt(250, LowEdgeOIRTSet); EEPROM.writeUInt(250, LowEdgeOIRTSet);
EEPROM.writeUInt(254, HighEdgeOIRTSet); EEPROM.writeUInt(254, HighEdgeOIRTSet);
EEPROM.writeByte(258, colorinvert); EEPROM.writeByte(258, colorinvert);
EEPROM.writeByte(259, deepsleep);
EEPROM.commit(); EEPROM.commit();
Serial.end(); Serial.end();
if (wifi) remoteip = IPAddress (WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], subnetclient); if (wifi) remoteip = IPAddress (WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], subnetclient);
@@ -1722,6 +1739,12 @@ void ButtonPress() {
tft.setTextColor(TFT_WHITE); tft.setTextColor(TFT_WHITE);
tft.drawCentreString("https://github.com/PE5PVB/TEF6686_ESP32", 155, 175, GFXFF); tft.drawCentreString("https://github.com/PE5PVB/TEF6686_ESP32", 155, 175, GFXFF);
break; break;
case 70:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][74], 155, 70, GFXFF);
tft.setTextColor(TFT_YELLOW);
if (deepsleep) tft.drawCentreString(myLanguage[language][75], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][76], 155, 110, GFXFF);
break;
} }
break; break;
} }
@@ -2109,6 +2132,13 @@ void KeyUp() {
if (colorinvert) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (colorinvert) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
tft.invertDisplay(colorinvert); tft.invertDisplay(colorinvert);
break; break;
case 70:
tft.setTextColor(TFT_BLACK);
if (deepsleep) tft.drawCentreString(myLanguage[language][75], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][76], 155, 110, GFXFF);
if (deepsleep) deepsleep = 0; else deepsleep = 1;
tft.setTextColor(TFT_YELLOW);
if (deepsleep) tft.drawCentreString(myLanguage[language][75], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][76], 155, 110, GFXFF);
break;
} }
break; break;
} }
@@ -2489,6 +2519,13 @@ void KeyDown() {
if (colorinvert) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF); if (colorinvert) tft.drawCentreString(myLanguage[language][42], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][30], 155, 110, GFXFF);
tft.invertDisplay(colorinvert); tft.invertDisplay(colorinvert);
break; break;
case 70:
tft.setTextColor(TFT_BLACK);
if (deepsleep) tft.drawCentreString(myLanguage[language][75], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][76], 155, 110, GFXFF);
if (deepsleep) deepsleep = 0; else deepsleep = 1;
tft.setTextColor(TFT_YELLOW);
if (deepsleep) tft.drawCentreString(myLanguage[language][75], 155, 110, GFXFF); else tft.drawCentreString(myLanguage[language][76], 155, 110, GFXFF);
break;
} }
break; break;
} }
@@ -2988,8 +3025,10 @@ void BuildMenu() {
case 4: case 4:
tft.drawString(myLanguage[language][69], 14, 30, GFXFF); tft.drawString(myLanguage[language][69], 14, 30, GFXFF);
tft.drawString(myLanguage[language][70], 14, 50, GFXFF); tft.drawString(myLanguage[language][70], 14, 50, GFXFF);
tft.drawString(myLanguage[language][74], 14, 70, GFXFF);
tft.setTextColor(TFT_YELLOW); tft.setTextColor(TFT_YELLOW);
if (colorinvert) tft.drawRightString(myLanguage[language][42], 305, 30, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 30, GFXFF); if (colorinvert) tft.drawRightString(myLanguage[language][42], 305, 30, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 30, GFXFF);
if (deepsleep) tft.drawRightString(myLanguage[language][75], 305, 70, GFXFF); else tft.drawRightString(myLanguage[language][76], 305, 70, GFXFF);
break; break;
} }
analogWrite(SMETERPIN, 0); analogWrite(SMETERPIN, 0);
@@ -4863,5 +4902,6 @@ void DefaultSettings() {
EEPROM.writeUInt(250, 0); EEPROM.writeUInt(250, 0);
EEPROM.writeUInt(254, 0); EEPROM.writeUInt(254, 0);
EEPROM.writeByte(258, 0); EEPROM.writeByte(258, 0);
EEPROM.writeByte(259, 0);
EEPROM.commit(); EEPROM.commit();
} }
+37 -10
View File
@@ -1,6 +1,6 @@
// [number of languages][number of texts][max. length of text] // [number of languages][number of texts][max. length of text]
static const char myLanguage[9][74][85] = { static const char myLanguage[9][77][85] = {
{ "English", // English { "English", // English
"Rotary direction changed", "Rotary direction changed",
"Please release button", "Please release button",
@@ -74,7 +74,10 @@ static const char myLanguage[9][74][85] = {
"About software", "About software",
"Main code:", "Main code:",
"Contributors:", "Contributors:",
"Unknown" "Unknown",
"Power options",
"Deep sleep",
"Screen off"
}, },
{ "Nederlands", // Dutch { "Nederlands", // Dutch
@@ -150,7 +153,10 @@ static const char myLanguage[9][74][85] = {
"Over deze software", "Over deze software",
"Basis code:", "Basis code:",
"Bijgedragen:", "Bijgedragen:",
"Onbekend" "Onbekend",
"Power options",
"Deep sleep",
"Screen off"
}, },
{ "Polski", // Polish { "Polski", // Polish
@@ -226,7 +232,10 @@ static const char myLanguage[9][74][85] = {
"About software", "About software",
"Main code:", "Main code:",
"Contributors:", "Contributors:",
"Unknown" "Unknown",
"Power options",
"Deep sleep",
"Screen off"
}, },
{ "Hrvatski", // Croatian { "Hrvatski", // Croatian
@@ -302,7 +311,10 @@ static const char myLanguage[9][74][85] = {
"O softveru", "O softveru",
"Glavni izvorni kod:", "Glavni izvorni kod:",
"Suradnici:", "Suradnici:",
"Nepoznato" "Nepoznato",
"Power options",
"Deep sleep",
"Screen off"
}, },
{ "Ελληνικά", // Greek { "Ελληνικά", // Greek
@@ -378,7 +390,10 @@ static const char myLanguage[9][74][85] = {
"Πληροφορίες λογισμικού", "Πληροφορίες λογισμικού",
"Κύριος κώδικας:", "Κύριος κώδικας:",
"Συνεργάτες:", "Συνεργάτες:",
"Unknown" "Unknown",
"Power options",
"Deep sleep",
"Screen off"
}, },
{ "Romana", // Romanian { "Romana", // Romanian
@@ -454,7 +469,10 @@ static const char myLanguage[9][74][85] = {
"About software", "About software",
"Main code:", "Main code:",
"Contributors:", "Contributors:",
"Unknown" "Unknown",
"Power options",
"Deep sleep",
"Screen off"
}, },
{ "Deutsch", // German { "Deutsch", // German
@@ -530,7 +548,10 @@ static const char myLanguage[9][74][85] = {
"Über diese Software", "Über diese Software",
"Hauptcode:", "Hauptcode:",
"Mitwirkende:", "Mitwirkende:",
"Unknown" "Unknown",
"Power options",
"Deep sleep",
"Screen off"
}, },
{ "Czech", // Czech { "Czech", // Czech
@@ -606,7 +627,10 @@ static const char myLanguage[9][74][85] = {
"About software", "About software",
"Main code:", "Main code:",
"Contributors:", "Contributors:",
"Unknown" "Unknown",
"Power options",
"Deep sleep",
"Screen off"
}, },
{ "Slovak", // Slovak { "Slovak", // Slovak
@@ -682,6 +706,9 @@ static const char myLanguage[9][74][85] = {
"About software", "About software",
"Main code:", "Main code:",
"Contributors:", "Contributors:",
"Unknown" "Unknown",
"Power options",
"Deep sleep",
"Screen off"
}, },
}; };