diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 2cd5656..22db341 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -28,6 +28,7 @@ TFT_eSPI tft = TFT_eSPI(320, 240); TFT_eSPI tft = TFT_eSPI(240, 320); #endif +bool edgebeep; bool BWreset; bool change2; bool cleanup; @@ -187,6 +188,7 @@ void setup() { EEPROM.writeByte(91, 0); EEPROM.writeByte(92, 0); EEPROM.writeByte(93, 0); + EEPROM.writeByte(94, 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); EEPROM.commit(); @@ -218,6 +220,7 @@ void setup() { language = EEPROM.readByte(91); softmutefm = EEPROM.readByte(92); softmuteam = EEPROM.readByte(93); + edgebeep = EEPROM.readByte(94); 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); btStop(); @@ -730,6 +733,7 @@ void ModeButtonPress() { EEPROM.writeByte(91, language); EEPROM.writeByte(92, softmutefm); EEPROM.writeByte(93, softmuteam); + EEPROM.writeByte(94, edgebeep); EEPROM.commit(); } while (digitalRead(MODEBUTTON) == LOW) delay(50); @@ -970,6 +974,13 @@ void ButtonPress() { tft.setTextColor(TFT_YELLOW); if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); break; + + case 110: + tft.setTextColor(TFT_WHITE); + tft.drawCentreString(myLanguage[language][45], 155, 70, 4); + tft.setTextColor(TFT_YELLOW); + if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + break; } } } else { @@ -1172,6 +1183,14 @@ void KeyUp() { if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); radio.setSoftmuteAM(softmuteam); break; + + case 110: + tft.setTextColor(TFT_BLACK); + if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (edgebeep) edgebeep = false; else edgebeep = true; + tft.setTextColor(TFT_YELLOW); + if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + break; } } } @@ -1373,6 +1392,14 @@ void KeyDown() { if (softmuteam) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); radio.setSoftmuteAM(softmuteam); break; + + case 110: + tft.setTextColor(TFT_BLACK); + if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + if (edgebeep) edgebeep = false; else edgebeep = true; + tft.setTextColor(TFT_YELLOW); + if (edgebeep) tft.drawCentreString(myLanguage[language][42], 155, 110, 4); else tft.drawCentreString(myLanguage[language][30], 155, 110, 4); + break; } } } @@ -1577,11 +1604,13 @@ void BuildMenu() { tft.drawString(myLanguage[language][38], 20, 50, 2); tft.drawString(myLanguage[language][43], 20, 70, 2); tft.drawString(myLanguage[language][44], 20, 90, 2); + tft.drawString(myLanguage[language][45], 20, 110, 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); if (softmutefm) tft.drawRightString(myLanguage[language][42], 305, 70, 2); else tft.drawRightString(myLanguage[language][30], 305, 70, 2); if (softmuteam) tft.drawRightString(myLanguage[language][42], 305, 90, 2); else tft.drawRightString(myLanguage[language][30], 305, 90, 2); + if (edgebeep) tft.drawRightString(myLanguage[language][42], 305, 110, 2); else tft.drawRightString(myLanguage[language][30], 305, 110, 2); break; } analogWrite(SMETERPIN, 0); @@ -2643,6 +2672,7 @@ void TuneUp() { frequency += temp; if (frequency >= (HighEdgeSet * 100) + 1) { frequency = LowEdgeSet * 100; + if (edgebeep) EdgeBeeper(); } radio.SetFreq(frequency); } @@ -2651,6 +2681,7 @@ void TuneUp() { frequency_AM += temp; if (frequency_AM > 27000) { frequency_AM = 144; + if (edgebeep) EdgeBeeper(); } radio.SetFreqAM(frequency_AM); } @@ -2684,7 +2715,10 @@ void TuneDown() { if (band == 0) { frequency -= temp; - if (frequency < LowEdgeSet * 100) frequency = HighEdgeSet * 100; + if (frequency < LowEdgeSet * 100) { + frequency = HighEdgeSet * 100; + if (edgebeep) EdgeBeeper(); + } radio.SetFreq(frequency); } @@ -2694,13 +2728,21 @@ void TuneDown() { frequency_AM = 27000; } else { frequency_AM -= temp; - if (frequency_AM < 144) frequency_AM = 27000; + if (frequency_AM < 144) { + frequency_AM = 27000; + if (edgebeep) EdgeBeeper(); + } } radio.SetFreqAM(frequency_AM); } radio.clearRDS(fullsearchrds); } +void EdgeBeeper() { + bool x = radio.mute; + radio.tone(50, -5, 2000); + if (x) radio.setMute(); else radio.setUnMute(); +} void Seek(bool mode) { if (band == 0) { diff --git a/src/TEF6686.cpp b/src/TEF6686.cpp index ae0cf84..2bb5810 100644 --- a/src/TEF6686.cpp +++ b/src/TEF6686.cpp @@ -130,10 +130,12 @@ void TEF6686::setVolume(int8_t volume) { } void TEF6686::setMute() { + mute = true; devTEF_Audio_Set_Mute(1); } void TEF6686::setUnMute() { + mute = false; devTEF_Audio_Set_Mute(0); } diff --git a/src/TEF6686.h b/src/TEF6686.h index 6876f5e..609accd 100644 --- a/src/TEF6686.h +++ b/src/TEF6686.h @@ -95,6 +95,7 @@ class TEF6686 { void setUnMute(); void setVolume(int8_t volume); uint8_t af_counter; + bool mute; void tone(uint16_t time, int16_t amplitude, uint16_t frequency); private: diff --git a/src/language.h b/src/language.h index cf3dd06..ab65b61 100644 --- a/src/language.h +++ b/src/language.h @@ -1,6 +1,6 @@ // [number of languages][number of texts][max. length of text] -const char myLanguage[3][45][50] = { +const char myLanguage[4][46][60] = { { "English", "Rotary direction changed", "Please release button", @@ -45,7 +45,8 @@ const char myLanguage[3][45][50] = { "PRESS MODE TO EXIT AND STORE", "On", "Softmute FM", - "Softmute AM" + "Softmute AM", + "Beep at bandedge" }, { "Nederlands", @@ -92,7 +93,8 @@ const char myLanguage[3][45][50] = { "DRUK OP MODE OM AF TE SLUITEN", "Aan", "Ruisonderdrukking FM", - "Ruisonderdrukking AM" + "Ruisonderdrukking AM", + "Piep op bandeinde" }, { "Polski", "Kierunek obrotu zmieniony", @@ -138,8 +140,55 @@ const char myLanguage[3][45][50] = { "WCISNIJ MODE ABY ZAMKNAC I ZAPISAC", "On", // Needs translation! "Softmute FM", // Needs translation! - "Softmute AM" // Needs translation! + "Softmute AM", // Needs translation! + "Beep at bandedge" // Needs translation! + }, + + {"Hrvatski", + "Smjer rotacijskog enkodera promijenjen", + "Molim pustite gumb", + "Zaslon je okrenut", + "Kalibracija analognog mjerača", + "Pustite gumb", + "Optički enkoder postavljen", + "Standardni enkoder postavljen", + "FM/AM prijemnik", + "Prijemnik: !Nije pronađen!", + "Glasnoća:", + "Konverter:", + "Donja granica opsega:", + "Gornja granica opsega:", + "Pomak RF razine:", + "Prag za stereo:", + "Visoki rez (corner):", + "Prag za visoki rez (threshold):", + "Niski prag razine:", + "Kontrast:", + "Postavite glasnoću", + "Postavite pomak konvertera", + "Postavite donju granicu opsega", + "Postavite gornju granicu opsega", + "Postavite pomak signala", + "Postavite prag stereo razdvajanja", + "Postavite frekvenciju visokog reza", + "Postavite prag za visoki rez", + "Postavite donju granicu signala", + "Postavite svjetlinu zaslona", + "Isključeno", + "Zaslon je isključen!", + "Da biste uključili zaslon, poništite kvadratić RF+", + "ISKLJ.", + "SKENIRANJE...", + "Prijemnik nije pronađen", + "Postavljena verzija prijemnika: v", + "Molim, ponovno pokrenite prijemnik", + "Prikaži RDS pogreške", + "Jezik", + "Odaberite jezik", + "PRITISNITE MODE ZA IZLAZ I SPREMANJE", + "Uklj.", + "Softmute FM", + "Softmute AM", + "Beep at bandedge" } - - };