Merge pull request #16 from ohmytime/main

add bands switch
This commit is contained in:
Sjef Verhoeven PE5PVB
2023-06-14 13:39:08 +02:00
committed by GitHub
2 changed files with 229 additions and 83 deletions

View File

@@ -157,6 +157,9 @@ unsigned int change;
unsigned int freq_scan;
unsigned int frequency;
unsigned int frequency_AM;
unsigned int frequency_LW;
unsigned int frequency_MW;
unsigned int frequency_SW;
unsigned int frequencyold;
unsigned int memory[30];
unsigned int scanner_end;
@@ -414,7 +417,7 @@ void loop() {
if (power == true) {
if (seek == true) Seek(direction);
if ((SStatus / 10 > LowLevelSet) && LowLevelInit == false && menu == false && band == 0) {
if ((SStatus / 10 > LowLevelSet) && LowLevelInit == false && menu == false && band == BAND_FM) {
if (screenmute == false) {
tft.setFreeFont(FONT7);
tft.setTextColor(TFT_WHITE);
@@ -435,7 +438,7 @@ void loop() {
LowLevelInit = true;
}
if ((SStatus / 10 <= LowLevelSet) && band == 0) {
if ((SStatus / 10 <= LowLevelSet) && band == BAND_FM) {
if (LowLevelInit == true && menu == false) {
if (screenmute == false) {
tft.setFreeFont(FONT7);
@@ -473,7 +476,7 @@ void loop() {
if (millis() >= lowsignaltimer + 300) {
lowsignaltimer = millis();
if (band == 0) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
if (band == BAND_FM) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
if (screenmute == true) readRds();
if (menu == false) {
doSquelch();
@@ -482,7 +485,7 @@ void loop() {
}
} else {
if (band == 0) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
if (band == BAND_FM) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
if (menu == false) {
doSquelch();
readRds();
@@ -494,7 +497,7 @@ void loop() {
XDRGTKRoutine();
if (menu == true && menuopen == true && menupage == 1 && menuoption == 110) {
if (band == 0) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
if (band == BAND_FM) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
if (millis() >= lowsignaltimer + 500 || change2 == true) {
lowsignaltimer = millis();
change2 = false;
@@ -547,7 +550,7 @@ void loop() {
void GetData() {
if (screenmute == false) {
if (band == 0) {
if (band == BAND_FM) {
showPI();
showPTY();
showCT();
@@ -577,7 +580,10 @@ void PWRButtonPress() {
ESP.restart();
} else {
if (tunemode != 2) {
if (band == 0) band = 1; else band = 0;
if (band == BAND_FM) band = BAND_LW;
else if(band == BAND_LW) band = BAND_MW;
else if(band == BAND_MW) band = BAND_SW;
else if(band == BAND_SW) band = BAND_FM;
StoreFrequency();
SelectBand();
}
@@ -607,14 +613,40 @@ void StoreFrequency() {
EEPROM.commit();
}
void LimitAMFrequency() {
switch(band){
case BAND_LW:
frequency_AM = frequency_LW;
if(frequency_AM > FREQ_LW_END || frequency_AM < FREQ_LW_START) {
frequency_AM = FREQ_LW_START;
}
break;
case BAND_MW:
frequency_AM = frequency_MW;
if(frequency_AM > (region == 0 ? FREQ_MW_END_EU : FREQ_MW_END_US) || frequency_AM < (region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US)) {
frequency_AM = region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US;
}
break;
case BAND_SW:
frequency_AM = frequency_SW;
if(frequency_AM > FREQ_SW_END || frequency_AM < FREQ_SW_START) {
frequency_AM = FREQ_SW_START;
}
break;
default:
break;
}
}
void SelectBand() {
if (band == 1) {
if (band != BAND_FM) {
seek = false;
if (tunemode == 1) tunemode = 0;
BWreset = true;
BWset = 2;
radio.SetFreqAM(frequency_AM);
freqold = frequency_AM;
LimitAMFrequency();
radio.SetFreqAM(frequency_AM);
doBW;
radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
if (screenmute == false) BuildDisplay();
@@ -754,20 +786,20 @@ void ModeButtonPress() {
void ShowStepSize() {
tft.fillRect(224, 38, 15, 4, TFT_GREYOUT);
tft.fillRect(193, 38, 15, 4, TFT_GREYOUT);
if (band == 0) tft.fillRect(148, 38, 15, 4, TFT_GREYOUT); else tft.fillRect(162, 38, 15, 4, TFT_GREYOUT);
if (band == 0) tft.fillRect(116, 38, 15, 4, TFT_GREYOUT); else tft.fillRect(128, 38, 15, 4, TFT_GREYOUT);
if (band == BAND_FM) tft.fillRect(148, 38, 15, 4, TFT_GREYOUT); else tft.fillRect(162, 38, 15, 4, TFT_GREYOUT);
if (band == BAND_FM) tft.fillRect(116, 38, 15, 4, TFT_GREYOUT); else tft.fillRect(128, 38, 15, 4, TFT_GREYOUT);
if (stepsize == 1) tft.fillRect(224, 38, 15, 4, TFT_GREEN);
if (stepsize == 2) tft.fillRect(193, 38, 15, 4, TFT_GREEN);
if (stepsize == 3) {
if (band == 0) tft.fillRect(148, 38, 15, 4, TFT_GREEN); else tft.fillRect(162, 38, 15, 4, TFT_GREEN);
if (band == BAND_FM) tft.fillRect(148, 38, 15, 4, TFT_GREEN); else tft.fillRect(162, 38, 15, 4, TFT_GREEN);
}
if (stepsize == 4) {
if (band == 0) tft.fillRect(116, 38, 15, 4, TFT_GREEN); else tft.fillRect(128, 38, 15, 4, TFT_GREEN);
if (band == BAND_FM) tft.fillRect(116, 38, 15, 4, TFT_GREEN); else tft.fillRect(128, 38, 15, 4, TFT_GREEN);
}
}
void RoundStep() {
if (band == 0) {
if (band == BAND_FM) {
unsigned int freq = frequency;
if (freq % 10 < 3) {
frequency = (freq - freq % 10);
@@ -780,14 +812,15 @@ void RoundStep() {
}
radio.SetFreq(frequency);
}
if (band == 1) {
unsigned int freq = frequency_AM / 9;
frequency_AM = freq * 9;
if (band == BAND_MW) {
unsigned int freq = frequency_AM / (region == 0 ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K);
frequency_AM = freq * (region == 0 ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K);
radio.SetFreqAM(frequency_AM);
}
while (digitalRead(ROTARY_BUTTON) == LOW) delay(50);
if (band == 0) EEPROM.writeUInt(0, frequency); else EEPROM.writeUInt(31, frequency_AM);
if (band == BAND_FM) EEPROM.writeUInt(0, frequency); else EEPROM.writeUInt(31, frequency_AM);
EEPROM.commit();
}
@@ -800,10 +833,10 @@ void ButtonPress() {
} else {
memorystore = false;
EEPROM.writeByte(memorypos + 60, band);
if (band == 0) EEPROM.writeUInt((memorypos * 4) + 100, frequency); else EEPROM.writeUInt((memorypos * 4) + 100, frequency_AM);
if (band == BAND_FM) EEPROM.writeUInt((memorypos * 4) + 100, frequency); else EEPROM.writeUInt((memorypos * 4) + 100, frequency_AM);
EEPROM.commit();
memoryband[memorypos] = band;
if (band == 0) memory[memorypos] = frequency; else memory[memorypos] = frequency_AM;
if (band == BAND_FM) memory[memorypos] = frequency; else memory[memorypos] = frequency_AM;
ShowTuneMode();
}
} else {
@@ -816,7 +849,6 @@ void ButtonPress() {
if (tunemode == 0) {
stepsize++;
if (stepsize > 4) stepsize = 0;
if (screenmute == false) ShowStepSize();
EEPROM.writeByte(40, stepsize);
@@ -1040,7 +1072,7 @@ void KeyUp() {
EEPROM.commit();
break;
}
if (USBstatus == true) if (band == 0) Serial.println("T" + String(frequency * 10)); else Serial.println("T" + String(frequency_AM));
if (USBstatus == true) if (band == BAND_FM) Serial.println("T" + String(frequency * 10)); else Serial.println("T" + String(frequency_AM));
radio.clearRDS(fullsearchrds);
change = 0;
ShowFreq(0);
@@ -1268,7 +1300,7 @@ void KeyDown() {
EEPROM.commit();
break;
}
if (USBstatus == true) if (band == 0) Serial.println("T" + String(frequency * 10)); else Serial.println("T" + String(frequency_AM));
if (USBstatus == true) if (band == BAND_FM) Serial.println("T" + String(frequency * 10)); else Serial.println("T" + String(frequency_AM));
radio.clearRDS(fullsearchrds);
change = 0;
ShowFreq(0);
@@ -1492,7 +1524,7 @@ void DoMemoryPosTune() {
band = memoryband[memorypos];
}
if (band == 0) {
if (band == BAND_FM) {
frequency = memory[memorypos];
radio.SetFreq(frequency);
} else {
@@ -1503,7 +1535,7 @@ void DoMemoryPosTune() {
}
void readRds() {
if (band == 0) {
if (band == BAND_FM) {
RDSstatus = radio.readRDS(showrdserrors);
ShowRDSLogo(RDSstatus);
if (RDSstatus == 0) {
@@ -1838,7 +1870,7 @@ void BuildDisplay() {
tft.setFreeFont(FONT14);
tft.drawString("kHz", 225, -5, GFXFF);
tft.setTextColor(TFT_WHITE);
if (band == 0) tft.drawString("MHz", 258, 67, GFXFF); else tft.drawString("kHz", 258, 67, GFXFF);
if (band == BAND_FM) tft.drawString("MHz", 258, 67, GFXFF); else tft.drawString("kHz", 258, 67, GFXFF);
tft.drawCircle(81, 15, 10, TFT_GREYOUT);
tft.drawCircle(81, 15, 9, TFT_GREYOUT);
tft.drawCircle(91, 15, 10, TFT_GREYOUT);
@@ -1850,7 +1882,10 @@ void BuildDisplay() {
}
tft.setTextColor(TFT_SKYBLUE);
tft.setFreeFont(FONT7);
if (band == 1) tft.drawString("AM", 50, 26, GFXFF); else tft.drawString("FM", 50, 26, GFXFF);
if (band == BAND_LW) tft.drawString("LW", 50, 26, GFXFF);
else if(band == BAND_MW) tft.drawString("MW", 50, 26, GFXFF);
else if(band == BAND_SW) tft.drawString("SW", 50, 26, GFXFF);
else tft.drawString("FM", 50, 26, GFXFF);
tft.setTextColor(TFT_GREYOUT);
tft.drawString("S", 162, 184, GFXFF);
tft.drawRightString("M", 185, 184, GFXFF);
@@ -1986,7 +2021,7 @@ void BuildDisplay() {
void ShowFreq(int mode) {
if (setupmode == false) {
if (band == 1) {
if (band == 1) { // Fix Me :take care of 9K/10K Step
if (freqold < 2000 && frequency_AM >= 2000 && stepsize == 0) if (frequency_AM != 27000 && freqold != 144) radio.SetFreqAM(2000);
if (freqold >= 2000 && frequency_AM < 2000 && stepsize == 0) if (frequency_AM != 144 && freqold != 27000) radio.SetFreqAM(1998);
}
@@ -1995,7 +2030,7 @@ void ShowFreq(int mode) {
if (screenmute == false) {
detachInterrupt(digitalPinToInterrupt(ROTARY_PIN_A));
detachInterrupt(digitalPinToInterrupt(ROTARY_PIN_B));
if (band == 1) {
if (band != BAND_FM ) {
unsigned int freq = frequency_AM;
String count = String(freq, DEC);
if (count.length() != freqoldcount || mode != 0) {
@@ -2017,7 +2052,7 @@ void ShowFreq(int mode) {
if (freqoldcount >= 4) tft.setCursor (44, 45);
tft.setTextFont(7);
tft.print(freqold / 100);
if (band == 0) {
if (band == BAND_FM) {
tft.print(".");
if (freqold % 100 < 10) tft.print("0");
tft.print(freqold % 100);
@@ -2054,7 +2089,7 @@ void ShowFreq(int mode) {
}
void ShowSignalLevel() {
if (band == 0) SNR = int(0.46222375 * (float)(SStatus / 10) - 0.082495118 * (float)(USN / 10)) + 10; else SNR = -((int8_t)(USN / 10));
if (band == BAND_FM) SNR = int(0.46222375 * (float)(SStatus / 10) - 0.082495118 * (float)(USN / 10)) + 10; else SNR = -((int8_t)(USN / 10));
if (SNR > (SNRold + 1) || SNR < (SNRold - 1)) {
tft.setFreeFont(FONT7);
@@ -2114,7 +2149,7 @@ void ShowSignalLevel() {
tft.drawString("." + String(SStatus % 10), 296, 97, GFXFF);
}
if (band == 0) segments = (SStatus + 200) / 10; else segments = (SStatus + 200) / 10;
if (band == BAND_FM) segments = (SStatus + 200) / 10; else segments = (SStatus + 200) / 10;
tft.fillRect(16, 109, 2 * constrain(segments, 0, 54), 8, TFT_GREEN);
tft.fillRect(16 + 2 * 54, 109, 2 * (constrain(segments, 54, 94) - 54), 8, TFT_RED);
@@ -2138,7 +2173,7 @@ void ShowRDSLogo(bool RDSstatus) {
void ShowStereoStatus() {
if (StereoToggle == true) {
if (band == 0) Stereostatus = radio.getStereoStatus(); else Stereostatus = 0;
if (band == BAND_FM) Stereostatus = radio.getStereoStatus(); else Stereostatus = 0;
if (Stereostatus != Stereostatusold) {
if (Stereostatus == true && screenmute == false) {
tft.drawCircle(81, 15, 10, TFT_RED);
@@ -2160,7 +2195,7 @@ void ShowStereoStatus() {
void ShowOffset() {
if (OStatus != OStatusold) {
if (band == 0) {
if (band == BAND_FM) {
if (OStatus < -500) {
tft.fillTriangle(6, 8, 6, 22, 14, 14, TFT_GREYOUT);
tft.fillTriangle(18, 8, 18, 22, 26, 14, TFT_GREYOUT);
@@ -2394,7 +2429,7 @@ void updateBW() {
void updateiMS() {
tft.setFreeFont(FONT7);
if (band == 0) {
if (band == BAND_FM) {
if (iMSset == 0) {
if (screenmute == false) {
tft.drawRoundRect(249, 56, 30, 20, 5, TFT_WHITE);
@@ -2414,7 +2449,7 @@ void updateiMS() {
void updateEQ() {
tft.setFreeFont(FONT7);
if (band == 0) {
if (band == BAND_FM) {
if (EQset == 0) {
if (screenmute == false) {
tft.drawRoundRect(287, 56, 30, 20, 5, TFT_WHITE);
@@ -2433,7 +2468,7 @@ void updateEQ() {
}
void doBW() {
if (band == 0) {
if (band == BAND_FM) {
if (BWset > 16) BWset = 0;
switch (BWset) {
@@ -2529,7 +2564,7 @@ void doBW() {
void doTuneMode() {
switch (tunemode) {
case 0:
if (band == 0) {
if (band == BAND_FM) {
tunemode = 1;
if (stepsize != 0) {
stepsize = 0;
@@ -2623,8 +2658,8 @@ void XDRGTKRoutine() {
switch (buff[0]) {
case 'x':
Serial.println("OK");
if (band != 0) {
band = 0;
if (band != BAND_FM) {
band = BAND_FM;
SelectBand();
}
Serial.print("T" + String(frequency * 10) + "A0\nD0\nG00\n");
@@ -2717,14 +2752,22 @@ void XDRGTKRoutine() {
case 'M':
byte XDRband;
XDRband = atol(buff + 1);
if (XDRband == 0) {
band = 0;
if (XDRband == BAND_FM) { // here XDRGTK need add four bands switch too
band = BAND_FM;
SelectBand();
Serial.print("M0\nT" + String(frequency * 10) + "\n");
} else {
band = 1;
} else if (XDRband == BAND_LW){
band = BAND_LW;
SelectBand();
Serial.print("M1\nT" + String(frequency_AM) + "\n");
} else if (XDRband == BAND_MW){
band = BAND_MW;
SelectBand();
Serial.print("M2\nT" + String(frequency_AM) + "\n");
} else if (XDRband == BAND_SW){
band = BAND_SW;
SelectBand();
Serial.print("M3\nT" + String(frequency_AM) + "\n");
}
break;
@@ -2732,26 +2775,44 @@ void XDRGTKRoutine() {
unsigned int freqtemp;
freqtemp = atoi(buff + 1);
if (seek == true) seek = false;
if (freqtemp > 143 && freqtemp < 27001) {
if (freqtemp >= FREQ_LW_START && freqtemp <= FREQ_LW_END) {
frequency_AM = freqtemp;
if (band != 1) {
band = 1;
if (band != BAND_LW) {
band = BAND_LW;
SelectBand();
} else {
radio.SetFreqAM(frequency_AM);
}
Serial.print("M1\n");
} else if (freqtemp > 64999 && freqtemp < 108001) {
} else if(freqtemp >= (region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US) && freqtemp <= (region == 0 ? FREQ_MW_END_EU : FREQ_MW_END_US)) {
frequency_AM = freqtemp;
if (band != BAND_MW) {
band = BAND_MW;
SelectBand();
} else {
radio.SetFreqAM(frequency_AM);
}
Serial.print("M2\n");
} else if(freqtemp >= FREQ_SW_START && freqtemp <= FREQ_SW_END) {
frequency_AM = freqtemp;
if (band != BAND_SW) {
band = BAND_SW;
SelectBand();
} else {
radio.SetFreqAM(frequency_AM);
}
Serial.print("M3\n");
} else if (freqtemp >= FREQ_FM_START && freqtemp < FREQ_FM_END) {
frequency = freqtemp / 10;
if (band != 0) {
band = 0;
if (band != BAND_FM) {
band = BAND_FM;
SelectBand();
Serial.print("M0\n");
} else {
radio.SetFreq(frequency);
}
}
if (band == 0) Serial.print("T" + String(frequency * 10) + "\n"); else Serial.print("T" + String(frequency_AM) + "\n");
if (band == BAND_FM) Serial.print("T" + String(frequency * 10) + "\n"); else Serial.print("T" + String(frequency_AM) + "\n");
radio.clearRDS(fullsearchrds);
RDSstatus = 0;
ShowFreq(0);
@@ -2819,7 +2880,7 @@ void XDRGTKRoutine() {
Serial.print(freq_scan * 10, DEC);
Serial.print('=');
delay(10);
if (band == 0) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
if (band == BAND_FM) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus);
Serial.print((SStatus / 10) + 10, DEC);
Serial.print(',');
}
@@ -2888,7 +2949,7 @@ void XDRGTKRoutine() {
Stereostatus = radio.getStereoStatus();
if (StereoToggle == false) {
Serial.print("SS");
} else if (Stereostatus == true && band == 0) {
} else if (Stereostatus == true && band == BAND_FM) {
Serial.print("Ss");
} else {
Serial.print("Sm");
@@ -2905,13 +2966,18 @@ void XDRGTKRoutine() {
void TuneUp() {
unsigned int temp;
if (stepsize == 0) {
if (band == 1) {
if (frequency_AM < 1998) {
temp = 9;
frequency_AM = (frequency_AM / 9) * 9;
if (band != BAND_FM) {
if (frequency_AM < FREQ_SW_START) {
if (region == 0) {
temp = FREQ_MW_STEP_9K;
frequency_AM = (frequency_AM / FREQ_MW_STEP_9K) * FREQ_MW_STEP_9K;
}else if(region == 1) {
temp = FREQ_MW_STEP_10K;
frequency_AM = (frequency_AM / FREQ_MW_STEP_10K) * FREQ_MW_STEP_10K;
}
} else {
temp = 5;
frequency_AM = (frequency_AM / 5) * 5;
temp = FREQ_SW_STEP_5K;
frequency_AM = (frequency_AM / FREQ_SW_STEP_5K) * FREQ_SW_STEP_5K;
}
} else {
temp = 5;
@@ -2922,7 +2988,7 @@ void TuneUp() {
if (stepsize == 3) temp = 100;
if (stepsize == 4) temp = 1000;
if (band == 0) {
if (band == BAND_FM) {
frequency += temp;
if (frequency >= (HighEdgeSet * 10) + 1) {
frequency = LowEdgeSet * 10;
@@ -2931,13 +2997,30 @@ void TuneUp() {
radio.SetFreq(frequency);
}
if (band == 1) {
if (band == BAND_LW) {
frequency_AM += temp;
if (frequency_AM > 27000) {
frequency_AM = 144;
if (frequency_AM > FREQ_LW_END) {
frequency_AM = FREQ_LW_START;
if (edgebeep) EdgeBeeper();
}
radio.SetFreqAM(frequency_AM);
frequency_LW = frequency_AM;
} else if (band == BAND_MW) {
frequency_AM += temp;
if (frequency_AM > (region == 0 ? FREQ_MW_END_EU : FREQ_MW_END_US)) {
frequency_AM = (region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US);
if (edgebeep) EdgeBeeper();
}
radio.SetFreqAM(frequency_AM);
frequency_MW = frequency_AM;
} else if (band == BAND_SW) {
frequency_AM += temp;
if (frequency_AM > FREQ_SW_END) {
frequency_AM = FREQ_SW_START;
if (edgebeep) EdgeBeeper();
}
radio.SetFreqAM(frequency_AM);
frequency_SW = frequency_AM;
}
radio.clearRDS(fullsearchrds);
}
@@ -2945,18 +3028,18 @@ void TuneUp() {
void TuneDown() {
unsigned int temp;
if (stepsize == 0) {
if (band == 1) {
if (frequency_AM <= 2000) {
if (frequency_AM == 2000) {
if (band != BAND_FM) {
if (frequency_AM <= FREQ_SW_START) {
if (frequency_AM == 2000) { // Fix Me :take care of 9K/10K Step
frequency_AM = 1998;
temp = 0;
} else {
temp = 9;
frequency_AM = (frequency_AM / 9) * 9;
temp = region == 0 ? FREQ_MW_STEP_9K : FREQ_MW_STEP_10K;
frequency_AM = (frequency_AM / temp) * temp;
}
} else {
temp = 5;
frequency_AM = (frequency_AM / 5) * 5;
temp = FREQ_SW_STEP_5K;
frequency_AM = (frequency_AM / temp) * temp;
}
} else {
temp = 5;
@@ -2967,7 +3050,7 @@ void TuneDown() {
if (stepsize == 3) temp = 100;
if (stepsize == 4) temp = 1000;
if (band == 0) {
if (band == BAND_FM) {
frequency -= temp;
if (frequency < LowEdgeSet * 10) {
frequency = HighEdgeSet * 10;
@@ -2976,18 +3059,30 @@ void TuneDown() {
radio.SetFreq(frequency);
}
if (band == 1) {
if (temp == 1000 && frequency_AM <= 1440)
{
frequency_AM = 27000;
} else {
frequency_AM -= temp;
if (frequency_AM < 144) {
frequency_AM = 27000;
if (edgebeep) EdgeBeeper();
}
if (band == BAND_LW) {
frequency_AM -= temp;
if (frequency_AM < FREQ_LW_START) {
frequency_AM = FREQ_LW_END;
if (edgebeep) EdgeBeeper();
}
radio.SetFreqAM(frequency_AM);
frequency_LW = frequency_AM;
} else if (band == BAND_MW) {
frequency_AM -= temp;
if (frequency_AM < (region == 0 ? FREQ_MW_START_EU : FREQ_MW_START_US)) {
frequency_AM = region == 0 ? FREQ_MW_END_EU : FREQ_MW_END_US;
if (edgebeep) EdgeBeeper();
}
radio.SetFreqAM(frequency_AM);
frequency_MW = frequency_AM;
}else if (band == BAND_SW) {
frequency_AM -= temp;
if (frequency_AM < FREQ_SW_START) {
frequency_AM = FREQ_SW_END;
if (edgebeep) EdgeBeeper();
}
radio.SetFreqAM(frequency_AM);
frequency_SW = frequency_AM;
}
radio.clearRDS(fullsearchrds);
}
@@ -2999,12 +3094,12 @@ void EdgeBeeper() {
}
void Seek(bool mode) {
if (band == 0) {
if (band == BAND_FM) {
radio.setMute();
if (mode == false) TuneDown(); else TuneUp();
delay(50);
ShowFreq(0);
if (USBstatus == true) if (band == 0) Serial.print("T" + String(frequency * 10) + "\n"); else Serial.print("T" + String(frequency_AM) + "\n");
if (USBstatus == true) if (band == BAND_FM) Serial.print("T" + String(frequency * 10) + "\n"); else Serial.print("T" + String(frequency_AM) + "\n");
radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus);
if ((USN < 200) && (WAM < 230) && (OStatus < 80 && OStatus > -80) && (Squelch < SStatus || Squelch == 920)) {

View File

@@ -11,6 +11,57 @@ enum RDS_GROUPS {
RDS_GROUP_12A, RDS_GROUP_12B, RDS_GROUP_13A, RDS_GROUP_13B, RDS_GROUP_14A, RDS_GROUP_14B, RDS_GROUP_15A, RDS_GROUP_15B
};
enum RADIO_BAND {
BAND_FM, BAND_LW, BAND_MW, BAND_SW
};
#define FREQ_MW_STEP_9K 9
#define FREQ_MW_STEP_10K 10
#define FREQ_SW_STEP_5K 5
#define FREQ_LW_START 144 // you can adjust here
#define FREQ_LW_END 513 // you can adjust here
#define FREQ_MW_START_EU 522
#define FREQ_MW_END_EU 1620
#define FREQ_MW_START_US 520
#define FREQ_MW_END_US 1710
#define FREQ_FM_START 65000
#define FREQ_FM_END 108000
// according to https://www.short-wave.info/index.php?feature=frequencies
#define FREQ_SW_START 1800
#define FREQ_SW_END 27000
#define FREQ_SW_160M_START 1800
#define FREQ_SW_160M_END 2000
#define FREQ_SW_120M_START 2300
#define FREQ_SW_120M_END 2495
#define FREQ_SW_90M_START 3200
#define FREQ_SW_90M_END 3400
#define FREQ_SW_75M_START 3900
#define FREQ_SW_75M_END 4000
#define FREQ_SW_60M_START 4750
#define FREQ_SW_60M_END 4995
#define FREQ_SW_49M_START 5900
#define FREQ_SW_49M_END 6200
#define FREQ_SW_41M_START 7200
#define FREQ_SW_41M_END 7450
#define FREQ_SW_31M_START 9400
#define FREQ_SW_31M_END 9900
#define FREQ_SW_25M_START 11600
#define FREQ_SW_25M_END 12100
#define FREQ_SW_22M_START 13570
#define FREQ_SW_22M_END 13870
#define FREQ_SW_19M_START 15100
#define FREQ_SW_19M_END 15800
#define FREQ_SW_16M_START 17480
#define FREQ_SW_16M_END 17900
#define FREQ_SW_15M_START 18900
#define FREQ_SW_15M_END 19020
#define FREQ_SW_13M_START 21450
#define FREQ_SW_13M_END 21850
#define FREQ_SW_11M_START 25670
#define FREQ_SW_11M_END 26100
const char* const PTY_EU[] {
"None",
"News",