Added multi menu function

Also corrected Dutch translation.
This commit is contained in:
Sjef Verhoeven PE5PVB
2023-06-05 21:24:30 +02:00
parent fb662d7922
commit f2ba6218d9
2 changed files with 439 additions and 343 deletions

View File

@@ -49,10 +49,12 @@ bool Stereostatusold;
bool StereoToggle = true; bool StereoToggle = true;
bool store; bool store;
bool tuned; bool tuned;
byte language = 0; byte language;
byte tunemode; byte tunemode;
byte memorypos; byte memorypos;
byte memoryposold; byte memoryposold;
byte menupage = 2;
byte menupagestotal = 2;
bool USBstatus; bool USBstatus;
bool XDRMute; bool XDRMute;
byte band; byte band;
@@ -155,8 +157,8 @@ TFT_eSprite sprite = TFT_eSprite(&tft);
void setup() { void setup() {
setupmode = true; setupmode = true;
EEPROM.begin(221); EEPROM.begin(221);
if (EEPROM.readByte(43) != 16) { if (EEPROM.readByte(43) != 17) {
EEPROM.writeByte(43, 16); EEPROM.writeByte(43, 17);
EEPROM.writeUInt(0, 10000); EEPROM.writeUInt(0, 10000);
EEPROM.writeInt(4, 0); EEPROM.writeInt(4, 0);
EEPROM.writeInt(8, 0); EEPROM.writeInt(8, 0);
@@ -180,6 +182,7 @@ void setup() {
EEPROM.writeByte(54, 0); EEPROM.writeByte(54, 0);
EEPROM.writeInt(55, 20); EEPROM.writeInt(55, 20);
EEPROM.writeByte(59, 1); EEPROM.writeByte(59, 1);
EEPROM.writeByte(91, 0);
for (int i = 0; i < 30; i++) EEPROM.writeByte(i + 60, 0); for (int i = 0; i < 30; i++) EEPROM.writeByte(i + 60, 0);
for (int i = 0; i < 30; i++) EEPROM.writeUInt((i * 4) + 100, 8750); for (int i = 0; i < 30; i++) EEPROM.writeUInt((i * 4) + 100, 8750);
EEPROM.commit(); EEPROM.commit();
@@ -208,6 +211,7 @@ void setup() {
TEF = EEPROM.readByte(54); TEF = EEPROM.readByte(54);
LowLevelSet = EEPROM.readInt(55); LowLevelSet = EEPROM.readInt(55);
showrdserrors = EEPROM.readByte(59); showrdserrors = EEPROM.readByte(59);
language = EEPROM.readByte(91);
for (int i = 0; i < 30; i++) memoryband[i] = EEPROM.readByte(i + 60); for (int i = 0; i < 30; i++) memoryband[i] = EEPROM.readByte(i + 60);
for (int i = 0; i < 30; i++) memory[i] = EEPROM.readUInt((i * 4) + 100); for (int i = 0; i < 30; i++) memory[i] = EEPROM.readUInt((i * 4) + 100);
btStop(); btStop();
@@ -714,6 +718,8 @@ void ModeButtonPress() {
EEPROM.writeInt(32, HighCutLevel); EEPROM.writeInt(32, HighCutLevel);
EEPROM.writeInt(36, HighCutOffset); EEPROM.writeInt(36, HighCutOffset);
EEPROM.writeInt(55, LowLevelSet); EEPROM.writeInt(55, LowLevelSet);
EEPROM.writeByte(59, showrdserrors);
EEPROM.writeByte(91, language);
EEPROM.commit(); EEPROM.commit();
} }
while (digitalRead(MODEBUTTON) == LOW) delay(50); while (digitalRead(MODEBUTTON) == LOW) delay(50);
@@ -836,91 +842,111 @@ void ButtonPress() {
menuopen = true; menuopen = true;
tft.drawRoundRect(30, 40, 240, 160, 5, TFT_WHITE); tft.drawRoundRect(30, 40, 240, 160, 5, TFT_WHITE);
tft.fillRoundRect(32, 42, 236, 156, 5, TFT_BLACK); tft.fillRoundRect(32, 42, 236, 156, 5, TFT_BLACK);
switch (menuoption) { switch (menupage) {
case 30: case 1:
tft.setTextColor(TFT_WHITE); switch (menuoption) {
tft.drawCentreString(myLanguage[language][10], 150, 70, 4); case 30:
tft.drawString("dB", 170, 110, 4); tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][10], 150, 70, 4);
tft.drawString("dB", 170, 110, 4);
tft.setTextColor(TFT_YELLOW); tft.setTextColor(TFT_YELLOW);
if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4); if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4);
break;
case 50:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][11], 150, 70, 4);
tft.drawString("MHz", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4);
break;
case 70:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][12], 150, 70, 4);
tft.drawString("MHz", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4);
break;
case 90:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][13], 150, 70, 4);
tft.drawString("MHz", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4);
break;
case 110:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][14], 150, 70, 4);
tft.drawString("dB", 170, 110, 4);
tft.drawString("dBuV", 190, 157, 4);
tft.setTextColor(TFT_YELLOW);
if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4);
SStatusold = 2000;
change2 = true;
break;
case 130:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][15], 150, 70, 4);
if (StereoLevel != 0) tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
break;
case 150:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][16], 150, 70, 4);
if (HighCutLevel != 0) tft.drawString("Hz", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
if (HighCutLevel != 0) tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
break;
case 170:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][17], 150, 70, 4);
if (HighCutOffset != 0) tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
break;
case 190:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][18], 150, 70, 4);
tft.drawString("dBuV", 150, 110, 4);
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4);
break;
case 210:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][19], 150, 70, 4);
tft.drawString("%", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4);
break;
}
break; break;
case 2:
switch (menuoption) {
case 30:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][40], 150, 70, 4);
tft.setTextColor(TFT_YELLOW);
tft.drawCentreString(myLanguage[language][0], 150, 110, 4);
break;
case 50: case 50:
tft.setTextColor(TFT_WHITE); tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][11], 150, 70, 4); tft.drawCentreString(myLanguage[language][38], 150, 70, 4);
tft.drawString("MHz", 170, 110, 4); tft.setTextColor(TFT_YELLOW);
tft.setTextColor(TFT_YELLOW); if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 150, 110, 4); else tft.drawCentreString(myLanguage[language][30], 150, 110, 4);
break;
tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4); }
break;
case 70:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][12], 150, 70, 4);
tft.drawString("MHz", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4);
break;
case 90:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][13], 150, 70, 4);
tft.drawString("MHz", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4);
break;
case 110:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][14], 150, 70, 4);
tft.drawString("dB", 170, 110, 4);
tft.drawString("dBuV", 190, 157, 4);
tft.setTextColor(TFT_YELLOW);
if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4);
SStatusold = 2000;
change2 = true;
break;
case 130:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][15], 150, 70, 4);
if (StereoLevel != 0) tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
break;
case 150:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][16], 150, 70, 4);
if (HighCutLevel != 0) tft.drawString("Hz", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
if (HighCutLevel != 0) tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
break;
case 170:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][17], 150, 70, 4);
if (HighCutOffset != 0) tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
break;
case 190:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][18], 150, 70, 4);
tft.drawString("dBuV", 150, 110, 4);
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4);
break;
case 210:
tft.setTextColor(TFT_WHITE);
tft.drawCentreString(myLanguage[language][19], 150, 70, 4);
tft.drawString("%", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4);
break;
} }
} else { } else {
menuopen = false; menuopen = false;
@@ -962,121 +988,149 @@ void KeyUp() {
if (menuopen == false) { if (menuopen == false) {
tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_BLACK); tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_BLACK);
menuoption += 20; menuoption += 20;
if (menuoption > 210) menuoption = 30; if (menuoption > 210) {
menupage++;
if (menupage > menupagestotal) menupage = 1;
menuoption = 30;
BuildMenu();
}
tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE); tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE);
} else { } else {
switch (menuoption) { switch (menupage) {
case 30: case 1:
tft.setTextColor(TFT_BLACK); switch (menuoption) {
if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4); case 30:
VolSet++; tft.setTextColor(TFT_BLACK);
if (VolSet > 10) VolSet = 10; if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4);
tft.setTextColor(TFT_YELLOW); VolSet++;
if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4); if (VolSet > 10) VolSet = 10;
radio.setVolume(VolSet); tft.setTextColor(TFT_YELLOW);
break; if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4);
radio.setVolume(VolSet);
break;
case 50: case 50:
tft.setTextColor(TFT_BLACK); tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4); tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4);
ConverterSet++; ConverterSet++;
if (ConverterSet > 2400 || ConverterSet <= 200) if (ConverterSet == 1) ConverterSet = 200; else ConverterSet = 0; if (ConverterSet > 2400 || ConverterSet <= 200) if (ConverterSet == 1) ConverterSet = 200; else ConverterSet = 0;
if (ConverterSet >= 200) { if (ConverterSet >= 200) {
Wire.beginTransmission(0x12); Wire.beginTransmission(0x12);
Wire.write(ConverterSet >> 8); Wire.write(ConverterSet >> 8);
Wire.write(ConverterSet & (0xFF)); Wire.write(ConverterSet & (0xFF));
Wire.endTransmission(); Wire.endTransmission();
}
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4);
break;
case 70:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4);
LowEdgeSet ++;
if (LowEdgeSet > 107) LowEdgeSet = 65;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4);
break;
case 90:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4);
HighEdgeSet ++;
if (HighEdgeSet > 108) HighEdgeSet = 66;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4);
break;
case 110:
tft.setTextColor(TFT_BLACK);
if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4);
LevelOffset++;
if (LevelOffset > 15) LevelOffset = -25;
tft.setTextColor(TFT_YELLOW);
if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4); radio.setOffset(LevelOffset);
change2 = true;
break;
case 130:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4);
StereoLevel ++;
if (StereoLevel > 60 || StereoLevel <= 30) if (StereoLevel == 1) StereoLevel = 30; else StereoLevel = 0;
tft.setTextColor(TFT_BLACK);
tft.drawRightString("Off", 165, 110, 4);
tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_WHITE);
if (StereoLevel != 0) tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
radio.setStereoLevel(StereoLevel);
break;
case 150:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4);
HighCutLevel ++;
if (HighCutLevel > 70) HighCutLevel = 15;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4);
radio.setHighCutLevel(HighCutLevel);
break;
case 170:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4);
HighCutOffset ++;
if (HighCutOffset > 60 || HighCutOffset <= 20) if (HighCutOffset == 1) HighCutOffset = 20; else HighCutOffset = 0;
tft.setTextColor(TFT_BLACK);
tft.drawRightString("Off", 165, 110, 4);
tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_WHITE);
if (HighCutOffset != 0) tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
radio.setHighCutOffset(HighCutOffset);
break;
case 190:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4);
LowLevelSet++;
if (LowLevelSet > 40) LowLevelSet = -10;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4);
break;
case 210:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4);
ContrastSet ++;
if (ContrastSet > 100) ContrastSet = 1;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4);
analogWrite(CONTRASTPIN, ContrastSet * 2 + 27);
break;
} }
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4);
break; break;
case 2:
switch (menuoption) {
case 30:
tft.setTextColor(TFT_BLACK);
tft.drawCentreString(myLanguage[language][0], 150, 110, 4);
language ++;
if (language == (sizeof (myLanguage) / sizeof (myLanguage[0]))) language = 0;
tft.setTextColor(TFT_YELLOW);
tft.drawCentreString(myLanguage[language][0], 150, 110, 4);
break;
case 70: case 50:
tft.setTextColor(TFT_BLACK); tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4); if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 150, 110, 4); else tft.drawCentreString(myLanguage[language][30], 150, 110, 4);
LowEdgeSet ++; if (showrdserrors) showrdserrors = false; else showrdserrors = true;
if (LowEdgeSet > 107) LowEdgeSet = 65; tft.setTextColor(TFT_YELLOW);
tft.setTextColor(TFT_YELLOW); if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 150, 110, 4); else tft.drawCentreString(myLanguage[language][30], 150, 110, 4);
tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4); break;
break; }
case 90:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4);
HighEdgeSet ++;
if (HighEdgeSet > 108) HighEdgeSet = 66;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4);
break;
case 110:
tft.setTextColor(TFT_BLACK);
if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4);
LevelOffset++;
if (LevelOffset > 15) LevelOffset = -25;
tft.setTextColor(TFT_YELLOW);
if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4); radio.setOffset(LevelOffset);
change2 = true;
break;
case 130:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4);
StereoLevel ++;
if (StereoLevel > 60 || StereoLevel <= 30) if (StereoLevel == 1) StereoLevel = 30; else StereoLevel = 0;
tft.setTextColor(TFT_BLACK);
tft.drawRightString("Off", 165, 110, 4);
tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_WHITE);
if (StereoLevel != 0) tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
radio.setStereoLevel(StereoLevel);
break;
case 150:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4);
HighCutLevel ++;
if (HighCutLevel > 70) HighCutLevel = 15;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4);
radio.setHighCutLevel(HighCutLevel);
break;
case 170:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4);
HighCutOffset ++;
if (HighCutOffset > 60 || HighCutOffset <= 20) if (HighCutOffset == 1) HighCutOffset = 20; else HighCutOffset = 0;
tft.setTextColor(TFT_BLACK);
tft.drawRightString("Off", 165, 110, 4);
tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_WHITE);
if (HighCutOffset != 0) tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
radio.setHighCutOffset(HighCutOffset);
break;
case 190:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4);
LowLevelSet++;
if (LowLevelSet > 40) LowLevelSet = -10;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4);
break;
case 210:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4);
ContrastSet ++;
if (ContrastSet > 100) ContrastSet = 1;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4);
analogWrite(CONTRASTPIN, ContrastSet * 2 + 27);
break;
} }
} }
} }
@@ -1115,124 +1169,151 @@ void KeyDown() {
tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_BLACK); tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_BLACK);
menuoption -= 20; menuoption -= 20;
if (menuoption < 30) { if (menuoption < 30) {
menupage--;
if (menupage == 0) menupage = menupagestotal;
menuoption = 210; menuoption = 210;
BuildMenu();
} }
tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE); tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE);
} else { } else {
switch (menuoption) { switch (menupage) {
case 30: case 1:
tft.setTextColor(TFT_BLACK); switch (menuoption) {
if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4); case 30:
VolSet--; tft.setTextColor(TFT_BLACK);
if (VolSet < -10) VolSet = -10; if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4);
tft.setTextColor(TFT_YELLOW); VolSet--;
if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4); radio.setVolume(VolSet); if (VolSet < -10) VolSet = -10;
break; tft.setTextColor(TFT_YELLOW);
if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 165, 110, 4); else tft.drawRightString(String(VolSet, DEC), 165, 110, 4); radio.setVolume(VolSet);
break;
case 50: case 50:
tft.setTextColor(TFT_BLACK); tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4); tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4);
ConverterSet--; ConverterSet--;
if (ConverterSet < 200) if (ConverterSet < 0) ConverterSet = 2400; else ConverterSet = 0; if (ConverterSet < 200) if (ConverterSet < 0) ConverterSet = 2400; else ConverterSet = 0;
if (ConverterSet >= 200) { if (ConverterSet >= 200) {
Wire.beginTransmission(0x12); Wire.beginTransmission(0x12);
Wire.write(ConverterSet >> 8); Wire.write(ConverterSet >> 8);
Wire.write(ConverterSet & (0xFF)); Wire.write(ConverterSet & (0xFF));
Wire.endTransmission(); Wire.endTransmission();
}
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4);
break;
case 70:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4);
LowEdgeSet --;
if (LowEdgeSet < 65) LowEdgeSet = 107;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4);
break;
case 90:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4);
HighEdgeSet --;
if (HighEdgeSet < 66) HighEdgeSet = 108;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4);
break;
case 110:
tft.setTextColor(TFT_BLACK);
if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4);
LevelOffset--;
if (LevelOffset < -25) LevelOffset = 15;
tft.setTextColor(TFT_YELLOW);
if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4); radio.setOffset(LevelOffset);
change2 = true;
break;
case 130:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4);
StereoLevel --;
if (StereoLevel < 30) if (StereoLevel < 0) StereoLevel = 60; else StereoLevel = 0;
tft.setTextColor(TFT_BLACK);
tft.drawRightString("Off", 165, 110, 4);
tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_WHITE);
if (StereoLevel != 0) {
tft.drawString("dBuV", 170, 110, 4);
}
tft.setTextColor(TFT_YELLOW);
if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
radio.setStereoLevel(StereoLevel);
break;
case 150:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4);
HighCutLevel --;
if (HighCutLevel < 15) HighCutLevel = 70;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4);
radio.setHighCutLevel(HighCutLevel);
break;
case 170:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4);
HighCutOffset --;
if (HighCutOffset < 20) if (HighCutOffset < 0) HighCutOffset = 60; else HighCutOffset = 0;
tft.setTextColor(TFT_BLACK);
tft.drawRightString("Off", 165, 110, 4);
tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_WHITE);
if (HighCutOffset != 0) tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
radio.setHighCutOffset(HighCutOffset);
break;
case 190:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4);
LowLevelSet--;
if (LowLevelSet < -10) LowLevelSet = 40;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4);
break;
case 210:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4);
ContrastSet --;
if (ContrastSet < 1) ContrastSet = 100;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4);
analogWrite(CONTRASTPIN, ContrastSet * 2 + 27);
break;
} }
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(ConverterSet, DEC), 165, 110, 4);
break; break;
case 70: case 2:
tft.setTextColor(TFT_BLACK); switch (menuoption) {
tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4); case 30:
LowEdgeSet --; tft.setTextColor(TFT_BLACK);
if (LowEdgeSet < 65) LowEdgeSet = 107; tft.drawCentreString(myLanguage[language][0], 150, 110, 4);
tft.setTextColor(TFT_YELLOW); language --;
tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 165, 110, 4); if (language > (sizeof (myLanguage) / sizeof (myLanguage[0]))) language = (sizeof (myLanguage) / sizeof (myLanguage[0])) - 1;
break; tft.setTextColor(TFT_YELLOW);
tft.drawCentreString(myLanguage[language][0], 150, 110, 4);
break;
case 90: case 50:
tft.setTextColor(TFT_BLACK); tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4); if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 150, 110, 4); else tft.drawCentreString(myLanguage[language][30], 150, 110, 4);
HighEdgeSet --; if (showrdserrors) showrdserrors = false; else showrdserrors = true;
if (HighEdgeSet < 66) HighEdgeSet = 108; tft.setTextColor(TFT_YELLOW);
tft.setTextColor(TFT_YELLOW); if (showrdserrors) tft.drawCentreString(myLanguage[language][42], 150, 110, 4); else tft.drawCentreString(myLanguage[language][30], 150, 110, 4);
tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 165, 110, 4); break;
break;
case 110:
tft.setTextColor(TFT_BLACK);
if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4);
LevelOffset--;
if (LevelOffset < -25) LevelOffset = 15;
tft.setTextColor(TFT_YELLOW);
if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 165, 110, 4); else tft.drawRightString(String(LevelOffset, DEC), 165, 110, 4); radio.setOffset(LevelOffset);
change2 = true;
break;
case 130:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4);
StereoLevel --;
if (StereoLevel < 30) if (StereoLevel < 0) StereoLevel = 60; else StereoLevel = 0;
tft.setTextColor(TFT_BLACK);
tft.drawRightString("Off", 165, 110, 4);
tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_WHITE);
if (StereoLevel != 0) {
tft.drawString("dBuV", 170, 110, 4);
} }
tft.setTextColor(TFT_YELLOW);
if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
radio.setStereoLevel(StereoLevel);
break;
case 150:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4);
HighCutLevel --;
if (HighCutLevel < 15) HighCutLevel = 70;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(HighCutLevel * 100, DEC), 165, 110, 4);
radio.setHighCutLevel(HighCutLevel);
break;
case 170:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4);
HighCutOffset --;
if (HighCutOffset < 20) if (HighCutOffset < 0) HighCutOffset = 60; else HighCutOffset = 0;
tft.setTextColor(TFT_BLACK);
tft.drawRightString("Off", 165, 110, 4);
tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_WHITE);
if (HighCutOffset != 0) tft.drawString("dBuV", 170, 110, 4);
tft.setTextColor(TFT_YELLOW);
if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 165, 110, 4); else tft.drawRightString("Off", 165, 110, 4);
radio.setHighCutOffset(HighCutOffset);
break;
case 190:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4);
LowLevelSet--;
if (LowLevelSet < -10) LowLevelSet = 40;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(LowLevelSet, DEC), 145, 110, 4);
break;
case 210:
tft.setTextColor(TFT_BLACK);
tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4);
ContrastSet --;
if (ContrastSet < 1) ContrastSet = 100;
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(ContrastSet, DEC), 165, 110, 4);
analogWrite(CONTRASTPIN, ContrastSet * 2 + 27);
break;
} }
} }
} }
@@ -1393,40 +1474,52 @@ void BuildMenu() {
tft.setTextColor(TFT_SKYBLUE); tft.setTextColor(TFT_SKYBLUE);
tft.drawString(myLanguage[language][41], 10, 4, 2); tft.drawString(myLanguage[language][41], 10, 4, 2);
tft.setTextColor(TFT_WHITE); tft.setTextColor(TFT_WHITE);
tft.drawRightString(VERSION, 305, 4, 2); tft.drawRightString(String(menupage) + "/" + String(menupagestotal), 305, 4, 2);
tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE); tft.drawRoundRect(10, menuoption, 300, 18, 5, TFT_WHITE);
tft.setTextColor(TFT_WHITE); tft.setTextColor(TFT_WHITE);
tft.drawRightString("dB", 305, 30, 2); switch (menupage) {
tft.drawRightString("MHz", 305, 50, 2); case 1:
tft.drawRightString("MHz", 305, 70, 2); tft.drawRightString("dB", 305, 30, 2);
tft.drawRightString("MHz", 305, 90, 2); tft.drawRightString("MHz", 305, 50, 2);
tft.drawRightString("dB", 305, 110, 2); tft.drawRightString("MHz", 305, 70, 2);
if (StereoLevel != 0) tft.drawRightString("dBuV", 305, 130, 2); tft.drawRightString("MHz", 305, 90, 2);
if (HighCutLevel != 0) tft.drawRightString("Hz", 305, 150, 2); tft.drawRightString("dB", 305, 110, 2);
if (HighCutOffset != 0) tft.drawRightString("dBuV", 305, 170, 2); if (StereoLevel != 0) tft.drawRightString("dBuV", 305, 130, 2);
tft.drawRightString("dBuV", 305, 190, 2); if (HighCutLevel != 0) tft.drawRightString("Hz", 305, 150, 2);
tft.drawRightString("%", 305, 210, 2); if (HighCutOffset != 0) tft.drawRightString("dBuV", 305, 170, 2);
tft.drawString(myLanguage[language][20], 20, 30, 2); tft.drawRightString("dBuV", 305, 190, 2);
tft.drawString(myLanguage[language][21], 20, 50, 2); tft.drawRightString("%", 305, 210, 2);
tft.drawString(myLanguage[language][22], 20, 70, 2); tft.drawString(myLanguage[language][20], 20, 30, 2);
tft.drawString(myLanguage[language][23], 20, 90, 2); tft.drawString(myLanguage[language][21], 20, 50, 2);
tft.drawString(myLanguage[language][24], 20, 110, 2); tft.drawString(myLanguage[language][22], 20, 70, 2);
tft.drawString(myLanguage[language][25], 20, 130, 2); tft.drawString(myLanguage[language][23], 20, 90, 2);
tft.drawString(myLanguage[language][26], 20, 150, 2); tft.drawString(myLanguage[language][24], 20, 110, 2);
tft.drawString(myLanguage[language][27], 20, 170, 2); tft.drawString(myLanguage[language][25], 20, 130, 2);
tft.drawString(myLanguage[language][28], 20, 190, 2); tft.drawString(myLanguage[language][26], 20, 150, 2);
tft.drawString(myLanguage[language][29], 20, 210, 2); tft.drawString(myLanguage[language][27], 20, 170, 2);
tft.setTextColor(TFT_YELLOW); tft.drawString(myLanguage[language][28], 20, 190, 2);
if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 270, 30, 2); else tft.drawRightString(String(VolSet, DEC), 270, 30, 2); tft.drawString(myLanguage[language][29], 20, 210, 2);
tft.drawRightString(String(ConverterSet, DEC), 270, 50, 2); tft.setTextColor(TFT_YELLOW);
tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 270, 70, 2); if (VolSet > 0) tft.drawRightString("+" + String(VolSet, DEC), 270, 30, 2); else tft.drawRightString(String(VolSet, DEC), 270, 30, 2);
tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 270, 90, 2); tft.drawRightString(String(ConverterSet, DEC), 270, 50, 2);
if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 270, 110, 2); else tft.drawRightString(String(LevelOffset, DEC), 270, 110, 2); tft.drawRightString(String(LowEdgeSet + ConverterSet, DEC), 270, 70, 2);
if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 270, 130, 2); else tft.drawRightString(myLanguage[language][30], 270, 130, 2); tft.drawRightString(String(HighEdgeSet + ConverterSet, DEC), 270, 90, 2);
if (HighCutLevel != 0) tft.drawRightString(String(HighCutLevel * 100, DEC), 270, 150, 2); else tft.drawRightString(myLanguage[language][30], 270, 150, 2); if (LevelOffset > 0) tft.drawRightString("+" + String(LevelOffset, DEC), 270, 110, 2); else tft.drawRightString(String(LevelOffset, DEC), 270, 110, 2);
if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 270, 170, 2); else tft.drawRightString(myLanguage[language][30], 270, 170, 2); if (StereoLevel != 0) tft.drawRightString(String(StereoLevel, DEC), 270, 130, 2); else tft.drawRightString(myLanguage[language][30], 270, 130, 2);
tft.drawRightString(String(LowLevelSet, DEC), 270, 190, 2); if (HighCutLevel != 0) tft.drawRightString(String(HighCutLevel * 100, DEC), 270, 150, 2); else tft.drawRightString(myLanguage[language][30], 270, 150, 2);
tft.drawRightString(String(ContrastSet, DEC), 270, 210, 2); if (HighCutOffset != 0) tft.drawRightString(String(HighCutOffset, DEC), 270, 170, 2); else tft.drawRightString(myLanguage[language][30], 270, 170, 2);
tft.drawRightString(String(LowLevelSet, DEC), 270, 190, 2);
tft.drawRightString(String(ContrastSet, DEC), 270, 210, 2);
break;
case 2:
tft.drawString(myLanguage[language][39], 20, 30, 2);
tft.drawString(myLanguage[language][38], 20, 50, 2);
tft.setTextColor(TFT_YELLOW);
tft.drawRightString(myLanguage[language][0], 305, 30, 2);
if (showrdserrors) tft.drawRightString(myLanguage[language][42], 305, 50, 2); else tft.drawRightString(myLanguage[language][30], 305, 50, 2);
break;
}
analogWrite(SMETERPIN, 0); analogWrite(SMETERPIN, 0);
} }

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]
const char myLanguage[3][42][50] = { const char myLanguage[3][43][50] = {
{ "English", { "English",
"Rotary direction changed", "Rotary direction changed",
"Please release button", "Please release button",
@@ -41,8 +41,9 @@ const char myLanguage[3][42][50] = {
"Please restart tuner", "Please restart tuner",
"Show RDS errors", "Show RDS errors",
"Language", "Language",
"Choose your language", "Choose language",
"PRESS MODE TO EXIT AND STORE" "PRESS MODE TO EXIT AND STORE",
"On"
}, },
{ "Nederlands", { "Nederlands",
@@ -60,9 +61,9 @@ const char myLanguage[3][42][50] = {
"Lage bandgrens:", "Lage bandgrens:",
"Hoge bandgrens:", "Hoge bandgrens:",
"RF niveau afwijking:", "RF niveau afwijking:",
"Stereo signaalgrens:", "Stereo grens:",
"Hoge tonen afval:", "Hoge tonen afval:",
"Hoge tonen afval grens:", "Hoog afval grens:",
"Laag signaal grens:", "Laag signaal grens:",
"Helderheid:", "Helderheid:",
"Stel volume in", "Stel volume in",
@@ -83,10 +84,11 @@ const char myLanguage[3][42][50] = {
"Tuner niet herkend!", "Tuner niet herkend!",
"Tuner versie ingesteld: v", "Tuner versie ingesteld: v",
"Herstart de tuner", "Herstart de tuner",
"RDS fouten weergeven", "Toon RDS fouten",
"Taal", "Taal",
"Kies uw taal", "Kies taal",
"DRUK OP MODE OM AF TE SLUITEN" "DRUK OP MODE OM AF TE SLUITEN",
"Aan"
}, },
{ "Polski", { "Polski",
"Kierunek obrotu zmieniony", "Kierunek obrotu zmieniony",
@@ -129,7 +131,8 @@ const char myLanguage[3][42][50] = {
"Pokaz bledy RDS", "Pokaz bledy RDS",
"Jezyk", "Jezyk",
"Wybierz swoj jezyk", "Wybierz swoj jezyk",
"WCISNIJ MODE ABY ZAMKNAC I ZAPISAC" "WCISNIJ MODE ABY ZAMKNAC I ZAPISAC",
"On" // Needs translation!
} }