Compare commits
7 Commits
version1.0
...
version1.0
Author | SHA1 | Date | |
---|---|---|---|
|
65d21aba77 | ||
|
6a2369bc27 | ||
|
76d5c362d0 | ||
|
70fc6aeba8 | ||
|
1d28f3e7e9 | ||
|
51f690ef85 | ||
|
12984486a6 |
30
VersionInfo.txt
Normal file
30
VersionInfo.txt
Normal file
@@ -0,0 +1,30 @@
|
||||
This file will guide you to change the source code file.
|
||||
For Windows-based Arduino IDE users, the directory name and the Main source file name must be the same.
|
||||
You do not need to learn github to download .hex files or source code that I release.
|
||||
However, if you want to see what I'm doing right now, you should use the github homepage.
|
||||
|
||||
You do not need to learn git to suggest source code. If you give me an e-mail, I will correct it at any time.
|
||||
If you have not joined the BITX Group, join group. There will be discussions on various topics every day.
|
||||
I am getting a lot of hints from the group.
|
||||
|
||||
Ian KD8CEC
|
||||
kd8cec@gmail.com
|
||||
==================================================================
|
||||
Files modified in Version1.075 Beta
|
||||
|
||||
1.Delted Files.
|
||||
|
||||
2.Added Files
|
||||
|
||||
3.Modified Files
|
||||
- ubitx_20.ino
|
||||
- ubitx_ui.ino
|
||||
- cat_libs.ino
|
||||
- ubitx.h
|
||||
- ubitx_eemap.h
|
||||
- ubitx_lcd_1602.ino
|
||||
- ubitx_lcd_1602Dual.ino
|
||||
- ubitx_lcd_2004.ino
|
||||
- ubitx_wspr.ino
|
||||
|
||||
|
@@ -31,8 +31,8 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
**************************************************************************/
|
||||
#define printLineF1(x) (printLineF(1, x))
|
||||
#define printLineF2(x) (printLineF(0, x))
|
||||
|
||||
#include "ubitx.h"
|
||||
|
||||
//for broken protocol
|
||||
#define CAT_RECEIVE_TIMEOUT 500
|
||||
@@ -654,7 +654,7 @@ void SetIFSValue(void)
|
||||
//void CatRxStatus(byte fromType)
|
||||
void CatRxStatus(void) //for remove warning
|
||||
{
|
||||
byte sMeterValue = 1;
|
||||
byte sMeterValue = 0;
|
||||
|
||||
/*
|
||||
http://www.ka7oei.com/ft817_meow.html
|
||||
@@ -667,6 +667,33 @@ void CatRxStatus(void) //for remove warning
|
||||
Bit 7 is 0 if there is a signal present, or 1 if the receiver is squelched.
|
||||
*/
|
||||
// The lower 4 bits (0-3) of this byte indicate the current S-meter reading. 00 refers to an S-Zero reading, 04 = S4, 09 = S9, 0A = "10 over," 0B = "20 over" and so on up to 0F.
|
||||
//0~8
|
||||
switch (scaledSMeter)
|
||||
{
|
||||
case 8 : sMeterValue = 0x0B;
|
||||
break;
|
||||
case 7 : sMeterValue = 0x0A;
|
||||
break;
|
||||
case 6 : sMeterValue = 0x09;
|
||||
break;
|
||||
case 5 : sMeterValue = 0x07;
|
||||
break;
|
||||
case 4 : sMeterValue = 0x05;
|
||||
break;
|
||||
case 3 : sMeterValue = 0x04;
|
||||
break;
|
||||
case 2 : sMeterValue = 0x02;
|
||||
break;
|
||||
case 1 : sMeterValue = 0x01;
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
sMeterValue = (scaledSMeter * 2) -1;
|
||||
if (sMeterValue > 0)
|
||||
sMeterValue--;
|
||||
*/
|
||||
|
||||
CAT_BUFF[0] = sMeterValue & 0b00001111;
|
||||
SendCatData(1);
|
||||
}
|
||||
|
@@ -36,8 +36,9 @@
|
||||
#define EXTEND_KEY_GROUP1 //MODE, BAND(-), BAND(+), STEP
|
||||
//#define EXTEND_KEY_GROUP2 //Numeric (0~9), Point(.), Enter //Not supported in Version 1.0x
|
||||
|
||||
#define ENABLE_FACTORYALIGN
|
||||
//#define ENABLE_ADCMONITOR //Starting with Version 1.07, you can read ADC values directly from uBITX Manager. So this function is not necessary.
|
||||
//#define ENABLE_FACTORYALIGN
|
||||
#define FACTORY_RECOVERY_BOOTUP //Whether to enter Factory Recovery mode by pressing FKey and turning on power
|
||||
#define ENABLE_ADCMONITOR //Starting with Version 1.07, you can read ADC values directly from uBITX Manager. So this function is not necessary.
|
||||
|
||||
extern byte I2C_LCD_MASTER_ADDRESS; //0x27 //if Set I2C Address by uBITX Manager, read from EEProm
|
||||
extern byte I2C_LCD_SECOND_ADDRESS; //only using Dual LCD Mode
|
||||
@@ -149,6 +150,9 @@ extern byte I2C_LCD_SECOND_ADDRESS; //only using Dual LCD Mode
|
||||
extern unsigned long frequency;
|
||||
extern byte WsprMSGCount;
|
||||
extern byte sMeterLevels[9];
|
||||
extern int currentSMeter; //ADC Value for S.Meter
|
||||
extern byte scaledSMeter; //Calculated S.Meter Level
|
||||
|
||||
extern byte KeyValues[16][3]; //Set : Start Value, End Value, Key Type, 16 Set (3 * 16 = 48)
|
||||
|
||||
extern void printLine1(const char *c);
|
||||
|
@@ -6,8 +6,8 @@
|
||||
// So I put + in the sense that it was improved one by one based on Original Firmware.
|
||||
// This firmware has been gradually changed based on the original firmware created by Farhan, Jack, Jerry and others.
|
||||
|
||||
#define FIRMWARE_VERSION_INFO F("+v1.073")
|
||||
#define FIRMWARE_VERSION_NUM 0x02 //1st Complete Project : 1 (Version 1.061), 2st Project : 2
|
||||
#define FIRMWARE_VERSION_INFO F("+v1.075")
|
||||
#define FIRMWARE_VERSION_NUM 0x03 //1st Complete Project : 1 (Version 1.061), 2st Project : 2
|
||||
|
||||
/**
|
||||
Cat Suppoort uBITX CEC Version
|
||||
@@ -182,6 +182,10 @@ byte line2DisplayStatus = 0; //0:Clear, 1 : menu, 1: DisplayFrom Idle,
|
||||
char lcdMeter[17];
|
||||
byte sMeterLevels[9];
|
||||
|
||||
//Current ADC Value for S.Meter, and S Meter Level
|
||||
int currentSMeter = 0;
|
||||
byte scaledSMeter = 0;
|
||||
|
||||
byte I2C_LCD_MASTER_ADDRESS; //0x27 //if Set I2C Address by uBITX Manager, read from EEProm
|
||||
byte I2C_LCD_SECOND_ADDRESS; //only using Dual LCD Mode
|
||||
|
||||
@@ -250,8 +254,8 @@ void setNextHamBandFreq(unsigned long f, char moveDirection)
|
||||
if ((resultFreq / 1000) < hamBandRange[(unsigned char)findedIndex][0] || (resultFreq / 1000) > hamBandRange[(unsigned char)findedIndex][1])
|
||||
resultFreq = (unsigned long)(hamBandRange[(unsigned char)findedIndex][0]) * 1000;
|
||||
|
||||
setFrequency(resultFreq);
|
||||
byteToMode(loadMode, 1);
|
||||
setFrequency(resultFreq);
|
||||
}
|
||||
|
||||
void saveBandFreqByIndex(unsigned long f, unsigned long mode, char bandIndex) {
|
||||
@@ -937,6 +941,15 @@ void initSettings(){
|
||||
if (EEPROM.read(VERSION_ADDRESS) != FIRMWARE_VERSION_NUM)
|
||||
EEPROM.write(VERSION_ADDRESS, FIRMWARE_VERSION_NUM);
|
||||
|
||||
//Backup Calibration Setting from Factory Setup
|
||||
//Check Factory Setting Backup Y/N
|
||||
if (EEPROM.read(FACTORY_BACKUP_YN) != 0x13) {
|
||||
EEPROM.write(FACTORY_BACKUP_YN, 0x13); //Set Backup Y/N
|
||||
|
||||
for (unsigned int i = 0; i < 32; i++) //factory setting range
|
||||
EEPROM.write(FACTORY_VALUES + i, EEPROM.read(i)); //0~31 => 65~96
|
||||
}
|
||||
|
||||
EEPROM.get(CW_CAL, cwmCarrier);
|
||||
|
||||
//for Save VFO_A_MODE to eeprom
|
||||
@@ -1212,6 +1225,40 @@ void initPorts(){
|
||||
digitalWrite(CW_KEY, 0);
|
||||
}
|
||||
|
||||
//Recovery Factory Setting Values
|
||||
void factory_Recovery()
|
||||
{
|
||||
if (EEPROM.read(FACTORY_BACKUP_YN) != 0x13)
|
||||
return;
|
||||
|
||||
if (digitalRead(PTT) == 0) //Do not proceed if PTT is pressed to prevent malfunction.
|
||||
return;
|
||||
|
||||
printLineF2(F("Factory Recovery"));
|
||||
delay(2000);
|
||||
if (!btnDown())
|
||||
return;
|
||||
|
||||
printLineF2(F("IF you continue"));
|
||||
printLineF1(F("release the key"));
|
||||
delay(2000);
|
||||
if (btnDown())
|
||||
return;
|
||||
|
||||
printLineF1(F("Press Key PTT"));
|
||||
delay(2000);
|
||||
if (digitalRead(PTT) == 0)
|
||||
{
|
||||
for (unsigned int i = 0; i < 32; i++) //factory setting range
|
||||
EEPROM.write(i, EEPROM.read(FACTORY_VALUES + i)); //65~96 => 0~31
|
||||
|
||||
//printLineF2(F("CompleteRecovery"));
|
||||
printLineF1(F("Power Reset!"));
|
||||
while(1); //Hold
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void setup()
|
||||
{
|
||||
/*
|
||||
@@ -1262,6 +1309,11 @@ void setup()
|
||||
|
||||
initPorts();
|
||||
|
||||
#ifdef FACTORY_RECOVERY_BOOTUP
|
||||
if (btnDown())
|
||||
factory_Recovery();
|
||||
#endif
|
||||
|
||||
byteToMode(vfoA_mode, 0);
|
||||
initOscillators();
|
||||
|
||||
@@ -1274,6 +1326,7 @@ void setup()
|
||||
if (btnDown())
|
||||
factory_alignment();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
//Auto save Frequency and Mode with Protected eeprom life by KD8CEC
|
||||
|
@@ -44,7 +44,9 @@
|
||||
// (Enabled if the EEProm address is insufficient)
|
||||
// Address : 64 ~ 100
|
||||
//==============================================================================
|
||||
#define RESERVE_FOR_FACTORY2 64
|
||||
#define RESERVE_FOR_FACTORY2 64 //use Factory backup from Version 1.075
|
||||
#define FACTORY_BACKUP_YN 64 //Check Backup //Magic : 0x13
|
||||
#define FACTORY_VALUES 65 //65 ~ 65 + 32
|
||||
|
||||
//==============================================================================
|
||||
// KD8CEC EEPROM MAP
|
||||
|
@@ -708,19 +708,15 @@ void DisplayMeter(byte meterType, byte meterValue, char drawPosition)
|
||||
|
||||
LCD_SetCursor(drawPosition, lineNumber);
|
||||
|
||||
//for (int i = 0; i <26; i++) //meter 5 + +db 1 = 6
|
||||
LCD_Write(lcdMeter[0]);
|
||||
LCD_Write(lcdMeter[1]);
|
||||
LCD_Write(lcdMeter[2]);
|
||||
}
|
||||
}
|
||||
|
||||
byte testValue = 0;
|
||||
char checkCount = 0;
|
||||
char checkCountSMeter = 0;
|
||||
|
||||
int currentSMeter = 0;
|
||||
byte scaledSMeter = 0;
|
||||
|
||||
void idle_process()
|
||||
{
|
||||
//space for user graphic display
|
||||
@@ -740,23 +736,17 @@ void idle_process()
|
||||
}
|
||||
}
|
||||
|
||||
//EX for Meters
|
||||
/*
|
||||
DisplayMeter(0, testValue++, 7);
|
||||
if (testValue > 30)
|
||||
testValue = 0;
|
||||
*/
|
||||
|
||||
//S-Meter Display
|
||||
if (((displayOption1 & 0x08) == 0x08 && (sdrModeOn == 0)) && (++checkCountSMeter > SMeterLatency))
|
||||
{
|
||||
int newSMeter;
|
||||
|
||||
//VK2ETA S-Meter from MAX9814 TC pin / divide 4 by KD8CEC for reduce EEPromSize
|
||||
newSMeter = analogRead(ANALOG_SMETER);
|
||||
newSMeter = analogRead(ANALOG_SMETER) / 4;
|
||||
|
||||
//Faster attack, Slower release
|
||||
currentSMeter = (newSMeter > currentSMeter ? ((currentSMeter * 3 + newSMeter * 7) + 5) / 10 : ((currentSMeter * 7 + newSMeter * 3) + 5) / 10) / 4;
|
||||
//currentSMeter = (newSMeter > currentSMeter ? ((currentSMeter * 3 + newSMeter * 7) + 5) / 10 : ((currentSMeter * 7 + newSMeter * 3) + 5) / 10) / 4;
|
||||
currentSMeter = newSMeter;
|
||||
|
||||
scaledSMeter = 0;
|
||||
for (byte s = 8; s >= 1; s--) {
|
||||
@@ -766,7 +756,7 @@ void idle_process()
|
||||
}
|
||||
}
|
||||
|
||||
DisplayMeter(0, scaledSMeter, 14);
|
||||
DisplayMeter(0, scaledSMeter, 13);
|
||||
checkCountSMeter = 0; //Reset Latency time
|
||||
} //end of S-Meter
|
||||
|
||||
|
@@ -583,17 +583,13 @@ void DisplayMeter(byte meterType, byte meterValue, char drawPosition)
|
||||
LCD_Write('S');
|
||||
|
||||
LCD_Write(':');
|
||||
for (int i = 0; i < 6; i++) //meter 5 + +db 1 = 6
|
||||
for (int i = 0; i < 7; i++)
|
||||
LCD_Write(lcdMeter[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
byte testValue = 0;
|
||||
char checkCount = 0;
|
||||
|
||||
int currentSMeter = 0;
|
||||
byte scaledSMeter = 0;
|
||||
char checkCountSMeter = 0;
|
||||
|
||||
char beforeKeyType = -1;
|
||||
@@ -676,12 +672,13 @@ void idle_process()
|
||||
int newSMeter;
|
||||
displaySDRON = 0;
|
||||
|
||||
//VK2ETA S-Meter from MAX9814 TC pin
|
||||
newSMeter = analogRead(ANALOG_SMETER);
|
||||
//VK2ETA S-Meter from MAX9814 TC pin / divide 4 by KD8CEC for reduce EEPromSize
|
||||
newSMeter = analogRead(ANALOG_SMETER) / 4;
|
||||
|
||||
//Faster attack, Slower release
|
||||
//currentSMeter = (newSMeter > currentSMeter ? ((currentSMeter * 3 + newSMeter * 7) + 5) / 10 : ((currentSMeter * 7 + newSMeter * 3) + 5) / 10);
|
||||
currentSMeter = (currentSMeter * 3 + newSMeter * 7) / 10; //remarked becaused of have already Latency time
|
||||
//currentSMeter = (currentSMeter * 3 + newSMeter * 7) / 10; //remarked becaused of have already Latency time
|
||||
currentSMeter = newSMeter;
|
||||
|
||||
scaledSMeter = 0;
|
||||
for (byte s = 8; s >= 1; s--) {
|
||||
|
@@ -642,90 +642,16 @@ void DisplayMeter(byte meterType, byte meterValue, char drawPosition)
|
||||
if (meterType == 0 || meterType == 1 || meterType == 2)
|
||||
{
|
||||
drawMeter(meterValue);
|
||||
//int lineNumber = 0;
|
||||
//if ((displayOption1 & 0x01) == 0x01)
|
||||
//lineNumber = 1;
|
||||
|
||||
LCD_SetCursor(drawPosition, 2);
|
||||
LCD_Write('S');
|
||||
LCD_Write(':');
|
||||
for (int i = 0; i < 6; i++) //meter 5 + +db 1 = 6
|
||||
for (int i = 0; i < 7; i++) //meter 5 + +db 1 = 6
|
||||
LCD_Write(lcdMeter[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//meterType : 0 = S.Meter, 1 = Forward Power Meter, 2 = SWR Meter
|
||||
void DisplayMeter(byte meterType, int meterValue, char drawPosition)
|
||||
{
|
||||
|
||||
#ifdef OPTION_SKINNYBARS //We want skinny meter bars with more text/numbers
|
||||
memcpy(&(line2Buffer[drawPosition]), " ", 8); //Blank that section of 8 characters first
|
||||
if (meterType == 0) { //SWR meter
|
||||
drawMeter(meterValue); //Only 2 characters
|
||||
line2Buffer[drawPosition] = 'S';
|
||||
byte sValue = round((float)meterValue * 1.5); //6 bars available only to show 9 S values
|
||||
sValue = sValue > 9 ? 9 : sValue; //Max S9
|
||||
line2Buffer[drawPosition + 1] = '0' + sValue; //0 to 9
|
||||
memcpy(&(line2Buffer[drawPosition + 2]), lcdMeter, 2); //Copy the S-Meter bars
|
||||
//Add the +10, +20, etc...
|
||||
if (meterValue > 6) {
|
||||
//We are over S9
|
||||
line2Buffer[drawPosition + 4] = '+';
|
||||
line2Buffer[drawPosition + 5] = '0' + meterValue - 6; //1,2,3 etc...
|
||||
line2Buffer[drawPosition + 6] = '0';
|
||||
}
|
||||
} else if (meterType == 1) { //Forward Power
|
||||
drawMeter(round((float)meterValue / 40)); //4 watts per bar
|
||||
//meterValue contains power value x 10 (one decimal point)
|
||||
line2Buffer[drawPosition] = 'P';
|
||||
meterValue = meterValue > 999 ? 999 : meterValue; //Limit to 99.9 watts!!!!
|
||||
//Remove decimal value and divide by 10
|
||||
meterValue = round((float)meterValue / 10);
|
||||
if (meterValue < 10) {
|
||||
line2Buffer[drawPosition + 1] = ' ';
|
||||
line2Buffer[drawPosition + 2] = '0' + meterValue; //0 to 9
|
||||
} else {
|
||||
line2Buffer[drawPosition + 1] = '0' + meterValue / 10;
|
||||
line2Buffer[drawPosition + 2] = '0' + (meterValue - ((meterValue / 10) * 10));
|
||||
}
|
||||
line2Buffer[drawPosition + 3] = 'W';
|
||||
memcpy(&(line2Buffer[drawPosition + 4]), lcdMeter, 2); //Copy the S-Meter bars
|
||||
} else { //SWR
|
||||
drawMeter((int)(((float)meterValue - 21) / 100)); //no bar = < 1.2, then 1 bar = 1.2 to 2.2, 2 bars = 2.2 to 3.2, etc...
|
||||
//meterValue contains SWR x 100 (two decimal point)
|
||||
memcpy(&(line2Buffer[drawPosition]), "SWR", 3);
|
||||
meterValue = round((float)meterValue / 10); //We now have swr x 10 (1 decimal point)
|
||||
if (meterValue < 100) { //10 to 99, no decimal point
|
||||
//Draw the decimal value
|
||||
line2Buffer[drawPosition + 3] = '0' + meterValue / 10;
|
||||
line2Buffer[drawPosition + 4] = '.';
|
||||
line2Buffer[drawPosition + 5] = '0' + (meterValue - ((meterValue / 10) * 10));
|
||||
} else {
|
||||
memcpy(&(line2Buffer[drawPosition + 3]), "10+", 3); //over 10
|
||||
}
|
||||
memcpy(&(line2Buffer[drawPosition + 6]), lcdMeter, 2); //Copy the S-Meter bars
|
||||
}
|
||||
#else //We want fat bars, easy to read, with less text/numbers
|
||||
//Serial.print("In displaymeter, meterValue: "); Serial.println(meterValue);
|
||||
drawMeter(meterValue);
|
||||
//Always line 2
|
||||
char sym = 'S';
|
||||
if (meterType == 1) sym = 'P';
|
||||
else if (meterType == 2) sym = 'R'; //For SWR
|
||||
line2Buffer[drawPosition] = sym;
|
||||
memcpy(&(line2Buffer[drawPosition + 1]), lcdMeter, 7);
|
||||
#endif //OPTION_SKINNYBARS
|
||||
|
||||
}
|
||||
|
||||
|
||||
byte testValue = 0;
|
||||
char checkCount = 0;
|
||||
|
||||
int currentSMeter = 0;
|
||||
//int sMeterLevels[] = {0, 5, 17, 41, 74, 140, 255, 365, 470};
|
||||
byte scaledSMeter = 0;
|
||||
char checkCountSMeter = 0;
|
||||
|
||||
//execute interval : 0.25sec
|
||||
@@ -769,10 +695,12 @@ void idle_process()
|
||||
int newSMeter;
|
||||
|
||||
//VK2ETA S-Meter from MAX9814 TC pin
|
||||
newSMeter = analogRead(ANALOG_SMETER);
|
||||
newSMeter = analogRead(ANALOG_SMETER) / 4;
|
||||
|
||||
//Faster attack, Slower release
|
||||
currentSMeter = (newSMeter > currentSMeter ? ((currentSMeter * 3 + newSMeter * 7) + 5) / 10 : ((currentSMeter * 7 + newSMeter * 3) + 5) / 10);
|
||||
//currentSMeter = (newSMeter > currentSMeter ? ((currentSMeter * 3 + newSMeter * 7) + 5) / 10 : ((currentSMeter * 7 + newSMeter * 3) + 5) / 10);
|
||||
//currentSMeter = ((currentSMeter * 7 + newSMeter * 3) + 5) / 10;
|
||||
currentSMeter = newSMeter;
|
||||
|
||||
scaledSMeter = 0;
|
||||
for (byte s = 8; s >= 1; s--) {
|
||||
|
@@ -1106,7 +1106,6 @@ void menuSetupKeyType(int btn){
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
printLineF2(F("CW Key Type set!"));
|
||||
cwKeyType = selectedKeyType;
|
||||
EEPROM.put(CW_KEY_TYPE, cwKeyType);
|
||||
@@ -1127,7 +1126,7 @@ void menuSetupKeyType(int btn){
|
||||
}
|
||||
|
||||
//=====================================================
|
||||
//END OF STANDARD Tune Setup for reduce Program Memory
|
||||
//END OF STANDARD Set by Knob for reduce Program Memory
|
||||
//=====================================================
|
||||
|
||||
|
||||
|
@@ -95,7 +95,7 @@ void initMeter(){
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i + 48);
|
||||
LCD_CreateChar(6, tmpbytes);
|
||||
LCD_CreateChar(7, tmpbytes);
|
||||
}
|
||||
|
||||
|
||||
@@ -128,13 +128,23 @@ void drawMeter(int needle)
|
||||
{
|
||||
#ifdef OPTION_SKINNYBARS
|
||||
//Fill buffer with growing set of bars, up to needle value
|
||||
lcdMeter[0] = 0x20;
|
||||
lcdMeter[1] = 0x20;
|
||||
for (int i = 0; i < 6; i++) {
|
||||
if (needle > i)
|
||||
lcdMeter[i / 3] = byte(i + 1); //Custom characters above
|
||||
else if (i == 1 || i == 4) {
|
||||
lcdMeter[i / 3] = 0x20; //blank
|
||||
}
|
||||
//else if (i == 1 || i == 4) {
|
||||
// lcdMeter[i / 3] = 0x20; //blank
|
||||
//}
|
||||
}
|
||||
|
||||
if (needle > 7) {
|
||||
lcdMeter[2] = byte(7); //Custom character "++"
|
||||
} else if (needle > 6) {
|
||||
lcdMeter[2] = '+'; //"+"
|
||||
} else lcdMeter[2] = 0x20;
|
||||
|
||||
|
||||
#else //Must be "fat" bars
|
||||
//Fill buffer with growing set of bars, up to needle value
|
||||
for (int i = 0; i < 6; i++) {
|
||||
@@ -143,11 +153,13 @@ void drawMeter(int needle)
|
||||
else
|
||||
lcdMeter[i] = 0x20; //blank
|
||||
}
|
||||
|
||||
if (needle > 7) {
|
||||
lcdMeter[6] = byte(7); //Custom character "++"
|
||||
} else if (needle > 6) {
|
||||
lcdMeter[6] = 0x2B; //"+"
|
||||
lcdMeter[6] = '+'; //"+"
|
||||
} else lcdMeter[6] = 0x20;
|
||||
|
||||
#endif //OPTION_FATBARS
|
||||
}
|
||||
|
||||
|
@@ -113,22 +113,9 @@ void SendWSPRManage()
|
||||
EEPROM.get(bandBuffIndex, WsprTXFreq);
|
||||
EEPROM.get(bandBuffIndex + 4, WsprMultiChan);
|
||||
|
||||
/*
|
||||
//3, 4, 5, 6, 7
|
||||
Wspr_Reg1[3] = EEPROM.read(bandBuffIndex + 6);
|
||||
Wspr_Reg1[4] = EEPROM.read(bandBuffIndex + 7);
|
||||
Wspr_Reg1[5] = EEPROM.read(bandBuffIndex + 8);
|
||||
Wspr_Reg1[6] = EEPROM.read(bandBuffIndex + 9);
|
||||
Wspr_Reg1[7] = EEPROM.read(bandBuffIndex + 10);
|
||||
*/
|
||||
for (loopIndex = 3; loopIndex < 8; loopIndex++)
|
||||
Wspr_Reg1[loopIndex] = EEPROM.read(bandBuffIndex + loopIndex + 3);
|
||||
|
||||
/*
|
||||
Wspr_Reg2[2] = EEPROM.read(bandBuffIndex + 11);
|
||||
Wspr_Reg2[3] = EEPROM.read(bandBuffIndex + 12);
|
||||
Wspr_Reg2[4] = EEPROM.read(bandBuffIndex + 13);
|
||||
*/
|
||||
//2, 3, 4
|
||||
for (loopIndex = 2; loopIndex < 5; loopIndex++)
|
||||
Wspr_Reg2[loopIndex] = EEPROM.read(bandBuffIndex + loopIndex + 9);
|
||||
@@ -136,18 +123,32 @@ void SendWSPRManage()
|
||||
TX_MSNB_P2 = ((unsigned long)Wspr_Reg1[5] & 0x0F) << 16 | ((unsigned long)Wspr_Reg1[6]) << 8 | Wspr_Reg1[7];
|
||||
}
|
||||
|
||||
ltoa(WsprTXFreq, b, DEC);
|
||||
if (digitalRead(PTT) == 0)
|
||||
strcpy(c, "SEND:");
|
||||
strcpy(c, "SEND: ");
|
||||
else
|
||||
strcpy(c, "PTT->");
|
||||
strcpy(c, "PTT-> ");
|
||||
|
||||
//ltoa(WsprTXFreq, b, DEC);
|
||||
//strcat(c, b);
|
||||
|
||||
//display frequency, Frequency to String for KD8CEC
|
||||
unsigned long tmpFreq = WsprTXFreq;
|
||||
for (int i = 15; i >= 6; i--) {
|
||||
if (tmpFreq > 0) {
|
||||
if (i == 12 || i == 8) c[i] = '.';
|
||||
else {
|
||||
c[i] = tmpFreq % 10 + 0x30;
|
||||
tmpFreq /= 10;
|
||||
}
|
||||
}
|
||||
else
|
||||
c[i] = ' ';
|
||||
}
|
||||
|
||||
strcat(c, b);
|
||||
printLine1(c);
|
||||
|
||||
if (digitalRead(PTT) == 0)
|
||||
{
|
||||
//printLineF1(F("Transmitting"));
|
||||
//SEND WSPR
|
||||
//If you need to consider the Rit and Sprite modes, uncomment them below.
|
||||
//remark = To reduce the size of the program
|
||||
|
Reference in New Issue
Block a user