Added MPX output
Select MPX (MPX + Mono) or stereo output in the menu. Updated the I2C busspeed to 400kHz.
This commit is contained in:
+35
-3
@@ -51,6 +51,7 @@ bool edgebeep;
|
|||||||
byte ECCold;
|
byte ECCold;
|
||||||
bool RDSSPYUSB;
|
bool RDSSPYUSB;
|
||||||
bool RDSSPYTCP;
|
bool RDSSPYTCP;
|
||||||
|
byte audiomode;
|
||||||
bool BWreset;
|
bool BWreset;
|
||||||
bool change2;
|
bool change2;
|
||||||
bool cleanup;
|
bool cleanup;
|
||||||
@@ -227,7 +228,7 @@ WiFiUDP Udp;
|
|||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
setupmode = true;
|
setupmode = true;
|
||||||
EEPROM.begin(248);
|
EEPROM.begin(249);
|
||||||
if (EEPROM.readByte(43) != 27) DefaultSettings();
|
if (EEPROM.readByte(43) != 27) DefaultSettings();
|
||||||
|
|
||||||
frequency = EEPROM.readUInt(0);
|
frequency = EEPROM.readUInt(0);
|
||||||
@@ -273,6 +274,7 @@ void setup() {
|
|||||||
showmodulation = EEPROM.readByte(245);
|
showmodulation = EEPROM.readByte(245);
|
||||||
amnb = EEPROM.readByte(246);
|
amnb = EEPROM.readByte(246);
|
||||||
fmnb = EEPROM.readByte(247);
|
fmnb = EEPROM.readByte(247);
|
||||||
|
audiomode = EEPROM.readByte(248);
|
||||||
|
|
||||||
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
|
||||||
@@ -460,6 +462,7 @@ void setup() {
|
|||||||
radio.setSoftmuteAM(softmuteam);
|
radio.setSoftmuteAM(softmuteam);
|
||||||
radio.setAMNoiseBlanker(amnb);
|
radio.setAMNoiseBlanker(amnb);
|
||||||
radio.setFMNoiseBlanker(fmnb);
|
radio.setFMNoiseBlanker(fmnb);
|
||||||
|
radio.setAudio(audiomode);
|
||||||
if (region == 1) radio.setDeemphasis(2);
|
if (region == 1) radio.setDeemphasis(2);
|
||||||
radio.rds.region = region;
|
radio.rds.region = region;
|
||||||
LowLevelInit = true;
|
LowLevelInit = true;
|
||||||
@@ -513,7 +516,7 @@ void loop() {
|
|||||||
if (region == 1) tft.drawString("ID:", 216, 191, GFXFF);
|
if (region == 1) tft.drawString("ID:", 216, 191, GFXFF);
|
||||||
tft.drawString("PS:", 6, 191, GFXFF);
|
tft.drawString("PS:", 6, 191, GFXFF);
|
||||||
tft.drawString("PTY:", 6, 164, GFXFF);
|
tft.drawString("PTY:", 6, 164, GFXFF);
|
||||||
tft.drawLine(20, 150, 200, 150, TFT_DARKGREY);
|
if (!showmodulation) tft.drawLine(20, 150, 200, 150, TFT_GREYOUT); else tft.drawLine(20, 150, 200, 150, TFT_DARKGREY);
|
||||||
}
|
}
|
||||||
LowLevelInit = true;
|
LowLevelInit = true;
|
||||||
}
|
}
|
||||||
@@ -1211,6 +1214,7 @@ void ModeButtonPress() {
|
|||||||
EEPROM.writeByte(245, showmodulation);
|
EEPROM.writeByte(245, showmodulation);
|
||||||
EEPROM.writeByte(246, amnb);
|
EEPROM.writeByte(246, amnb);
|
||||||
EEPROM.writeByte(247, fmnb);
|
EEPROM.writeByte(247, fmnb);
|
||||||
|
EEPROM.writeByte(248, audiomode);
|
||||||
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);
|
||||||
@@ -1581,6 +1585,13 @@ void ButtonPress() {
|
|||||||
tft.setTextColor(TFT_YELLOW);
|
tft.setTextColor(TFT_YELLOW);
|
||||||
if (fmnb != 0) tft.drawRightString(String(fmnb, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF);
|
if (fmnb != 0) tft.drawRightString(String(fmnb, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 190:
|
||||||
|
tft.setTextColor(TFT_WHITE);
|
||||||
|
tft.drawCentreString(myLanguage[language][67], 155, 70, GFXFF);
|
||||||
|
tft.setTextColor(TFT_YELLOW);
|
||||||
|
if (audiomode) tft.drawCentreString("MPX", 155, 110, GFXFF); else tft.drawCentreString("Stereo", 155, 110, GFXFF);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -1925,6 +1936,15 @@ void KeyUp() {
|
|||||||
if (fmnb != 0) tft.drawRightString(String(fmnb, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF);
|
if (fmnb != 0) tft.drawRightString(String(fmnb, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF);
|
||||||
radio.setFMNoiseBlanker(fmnb);
|
radio.setFMNoiseBlanker(fmnb);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 190:
|
||||||
|
tft.setTextColor(TFT_BLACK);
|
||||||
|
if (audiomode) tft.drawCentreString("MPX", 155, 110, GFXFF); else tft.drawCentreString("Stereo", 155, 110, GFXFF);
|
||||||
|
if (audiomode) audiomode = false; else audiomode = true;
|
||||||
|
tft.setTextColor(TFT_YELLOW);
|
||||||
|
if (audiomode) tft.drawCentreString("MPX", 155, 110, GFXFF); else tft.drawCentreString("Stereo", 155, 110, GFXFF);
|
||||||
|
radio.setAudio(audiomode);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2262,6 +2282,15 @@ void KeyDown() {
|
|||||||
if (fmnb != 0) tft.drawRightString(String(fmnb, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF);
|
if (fmnb != 0) tft.drawRightString(String(fmnb, DEC), 155, 110, GFXFF); else tft.drawRightString(myLanguage[language][30], 155, 110, GFXFF);
|
||||||
radio.setFMNoiseBlanker(fmnb);
|
radio.setFMNoiseBlanker(fmnb);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 190:
|
||||||
|
tft.setTextColor(TFT_BLACK);
|
||||||
|
if (audiomode) tft.drawCentreString("MPX", 155, 110, GFXFF); else tft.drawCentreString("Stereo", 155, 110, GFXFF);
|
||||||
|
if (audiomode) audiomode = false; else audiomode = true;
|
||||||
|
tft.setTextColor(TFT_YELLOW);
|
||||||
|
if (audiomode) tft.drawCentreString("MPX", 155, 110, GFXFF); else tft.drawCentreString("Stereo", 155, 110, GFXFF);
|
||||||
|
radio.setAudio(audiomode);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2656,6 +2685,7 @@ void BuildMenu() {
|
|||||||
tft.drawString(myLanguage[language][63], 14, 130, GFXFF);
|
tft.drawString(myLanguage[language][63], 14, 130, GFXFF);
|
||||||
tft.drawString(myLanguage[language][64], 14, 150, GFXFF);
|
tft.drawString(myLanguage[language][64], 14, 150, GFXFF);
|
||||||
tft.drawString(myLanguage[language][65], 14, 170, GFXFF);
|
tft.drawString(myLanguage[language][65], 14, 170, GFXFF);
|
||||||
|
tft.drawString(myLanguage[language][67], 14, 190, GFXFF);
|
||||||
if (amnb != 0) tft.drawRightString("%", 305, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 150, GFXFF);
|
if (amnb != 0) tft.drawRightString("%", 305, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 150, GFXFF);
|
||||||
if (fmnb != 0) tft.drawRightString("%", 305, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 170, GFXFF);
|
if (fmnb != 0) tft.drawRightString("%", 305, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 170, GFXFF);
|
||||||
tft.setTextColor(TFT_YELLOW);
|
tft.setTextColor(TFT_YELLOW);
|
||||||
@@ -2667,6 +2697,7 @@ void BuildMenu() {
|
|||||||
if (showmodulation) tft.drawRightString(myLanguage[language][42], 305, 130, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 130, GFXFF);
|
if (showmodulation) tft.drawRightString(myLanguage[language][42], 305, 130, GFXFF); else tft.drawRightString(myLanguage[language][30], 305, 130, GFXFF);
|
||||||
if (amnb != 0) tft.drawRightString(String(amnb, DEC), 265, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 150, GFXFF);
|
if (amnb != 0) tft.drawRightString(String(amnb, DEC), 265, 150, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 150, GFXFF);
|
||||||
if (fmnb != 0) tft.drawRightString(String(fmnb, DEC), 265, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 170, GFXFF);
|
if (fmnb != 0) tft.drawRightString(String(fmnb, DEC), 265, 170, GFXFF); else tft.drawRightString(myLanguage[language][30], 265, 170, GFXFF);
|
||||||
|
if (audiomode) tft.drawRightString("MPX", 305, 190, GFXFF); else tft.drawRightString("Stereo", 305, 190, GFXFF);
|
||||||
}
|
}
|
||||||
analogWrite(SMETERPIN, 0);
|
analogWrite(SMETERPIN, 0);
|
||||||
}
|
}
|
||||||
@@ -2705,7 +2736,7 @@ void BuildDisplay() {
|
|||||||
tft.drawLine(108, 30, 108, 0, TFT_BLUE);
|
tft.drawLine(108, 30, 108, 0, TFT_BLUE);
|
||||||
tft.drawLine(174, 30, 174, 0, TFT_BLUE);
|
tft.drawLine(174, 30, 174, 0, TFT_BLUE);
|
||||||
tft.drawLine(20, 120, 200, 120, TFT_DARKGREY);
|
tft.drawLine(20, 120, 200, 120, TFT_DARKGREY);
|
||||||
tft.drawLine(20, 150, 200, 150, TFT_DARKGREY);
|
if (!showmodulation) tft.drawLine(20, 150, 200, 150, TFT_GREYOUT); else tft.drawLine(20, 150, 200, 150, TFT_DARKGREY);
|
||||||
for (uint16_t segments = 0; segments < 94; segments++) {
|
for (uint16_t segments = 0; segments < 94; segments++) {
|
||||||
if (segments > 54) {
|
if (segments > 54) {
|
||||||
if (((segments - 53) % 10) == 0)
|
if (((segments - 53) % 10) == 0)
|
||||||
@@ -4488,5 +4519,6 @@ void DefaultSettings() {
|
|||||||
EEPROM.writeByte(245, 1);
|
EEPROM.writeByte(245, 1);
|
||||||
EEPROM.writeByte(246, 0);
|
EEPROM.writeByte(246, 0);
|
||||||
EEPROM.writeByte(247, 0);
|
EEPROM.writeByte(247, 0);
|
||||||
|
EEPROM.writeByte(248, 0);
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -120,8 +120,7 @@ void TEF6686::setDeemphasis(uint8_t timeconstant) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TEF6686::setAudio(uint8_t audio) {
|
void TEF6686::setAudio(uint8_t audio) {
|
||||||
if (audio == 1) devTEF_Radio_Specials(0);
|
devTEF_Radio_Specials(audio);
|
||||||
if (audio == 2) devTEF_Radio_Specials(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TEF6686::setFMSI(uint8_t mode) {
|
void TEF6686::setFMSI(uint8_t mode) {
|
||||||
|
|||||||
+24
-14
@@ -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][67][78] = {
|
static const char myLanguage[9][68][78] = {
|
||||||
{ "English", // English
|
{ "English", // English
|
||||||
"Rotary direction changed",
|
"Rotary direction changed",
|
||||||
"Please release button",
|
"Please release button",
|
||||||
@@ -67,7 +67,8 @@ static const char myLanguage[9][67][78] = {
|
|||||||
"Modulation meter",
|
"Modulation meter",
|
||||||
"AM Noise blanker",
|
"AM Noise blanker",
|
||||||
"FM Noise blanker",
|
"FM Noise blanker",
|
||||||
"Defaults loaded"
|
"Defaults loaded",
|
||||||
|
"Audio output"
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Nederlands", // Dutch
|
{ "Nederlands", // Dutch
|
||||||
@@ -136,7 +137,8 @@ static const char myLanguage[9][67][78] = {
|
|||||||
"Modulatie meter",
|
"Modulatie meter",
|
||||||
"AM ruis filter",
|
"AM ruis filter",
|
||||||
"FM ruis filter",
|
"FM ruis filter",
|
||||||
"Opnieuw geconfigureerd"
|
"Opnieuw geconfigureerd",
|
||||||
|
"Audio uitgang"
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Polski", // Polish
|
{ "Polski", // Polish
|
||||||
@@ -205,7 +207,8 @@ static const char myLanguage[9][67][78] = {
|
|||||||
"Modulation meter",
|
"Modulation meter",
|
||||||
"AM Noise blanker",
|
"AM Noise blanker",
|
||||||
"FM Noise blanker",
|
"FM Noise blanker",
|
||||||
"Defaults loaded"
|
"Defaults loaded",
|
||||||
|
"Audio output"
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Hrvatski", // Croatian
|
{ "Hrvatski", // Croatian
|
||||||
@@ -274,7 +277,8 @@ static const char myLanguage[9][67][78] = {
|
|||||||
"Mjerač modulacije",
|
"Mjerač modulacije",
|
||||||
"AM prigušivač šuma",
|
"AM prigušivač šuma",
|
||||||
"FM prigušivač šuma",
|
"FM prigušivač šuma",
|
||||||
"Defaults loaded"
|
"Defaults loaded",
|
||||||
|
"Audio output"
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Ελληνικά", // Greek
|
{ "Ελληνικά", // Greek
|
||||||
@@ -339,11 +343,12 @@ static const char myLanguage[9][67][78] = {
|
|||||||
"Εμφάνιση μήκους κύματος SW",
|
"Εμφάνιση μήκους κύματος SW",
|
||||||
"Φίλτρο RDS",
|
"Φίλτρο RDS",
|
||||||
"Δυναμικό PI",
|
"Δυναμικό PI",
|
||||||
"Εμφάνιση squelch",
|
"Εμφάνιση squelch",
|
||||||
"Μετρητής διαμόρφωσης",
|
"Μετρητής διαμόρφωσης",
|
||||||
"Απαλοιφή θορύβου AM",
|
"Απαλοιφή θορύβου AM",
|
||||||
"Απαλοιφή θορύβου FM"
|
"Απαλοιφή θορύβου FM"
|
||||||
"Defaults loaded"
|
"Defaults loaded",
|
||||||
|
"Audio output"
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Romana", // Romanian
|
{ "Romana", // Romanian
|
||||||
@@ -412,7 +417,8 @@ static const char myLanguage[9][67][78] = {
|
|||||||
"Modulation meter",
|
"Modulation meter",
|
||||||
"AM Noise blanker",
|
"AM Noise blanker",
|
||||||
"FM Noise blanker",
|
"FM Noise blanker",
|
||||||
"Defaults loaded"
|
"Defaults loaded",
|
||||||
|
"Audio output"
|
||||||
},
|
},
|
||||||
|
|
||||||
{ "Deutsch", // German
|
{ "Deutsch", // German
|
||||||
@@ -481,7 +487,8 @@ static const char myLanguage[9][67][78] = {
|
|||||||
"Modulation meter",
|
"Modulation meter",
|
||||||
"AM Noise blanker",
|
"AM Noise blanker",
|
||||||
"FM Noise blanker",
|
"FM Noise blanker",
|
||||||
"Defaults loaded"
|
"Defaults loaded",
|
||||||
|
"Audio output"
|
||||||
},
|
},
|
||||||
{ "Czech", // Czech
|
{ "Czech", // Czech
|
||||||
"Směr enkóderu byl změněn",
|
"Směr enkóderu byl změněn",
|
||||||
@@ -549,7 +556,9 @@ static const char myLanguage[9][67][78] = {
|
|||||||
"Modulation meter",
|
"Modulation meter",
|
||||||
"AM Noise blanker",
|
"AM Noise blanker",
|
||||||
"FM Noise blanker",
|
"FM Noise blanker",
|
||||||
"Defaults loaded"
|
"Defaults loaded",
|
||||||
|
"Audio output"
|
||||||
|
|
||||||
},
|
},
|
||||||
{ "Slovak", // Slovak
|
{ "Slovak", // Slovak
|
||||||
"Smer enkóderu bol zmenený",
|
"Smer enkóderu bol zmenený",
|
||||||
@@ -617,6 +626,7 @@ static const char myLanguage[9][67][78] = {
|
|||||||
"Modulation meter",
|
"Modulation meter",
|
||||||
"AM Noise blanker",
|
"AM Noise blanker",
|
||||||
"FM Noise blanker",
|
"FM Noise blanker",
|
||||||
"Defaults loaded"
|
"Defaults loaded",
|
||||||
|
"Audio output"
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user