Skip to content

Commit 4d97ac2

Browse files
authored
Merge pull request #33 from phdlee/version1.074
Version1.074
2 parents 75d9527 + 1d28f3e commit 4d97ac2

9 files changed

+122
-130
lines changed

VersionInfo.txt

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
This file will guide you to change the source code file.
2+
For Windows-based Arduino IDE users, the directory name and the Main source file name must be the same.
3+
You do not need to learn github to download .hex files or source code that I release.
4+
However, if you want to see what I'm doing right now, you should use the github homepage.
5+
6+
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.
7+
If you have not joined the BITX Group, join group. There will be discussions on various topics every day.
8+
I am getting a lot of hints from the group.
9+
10+
Ian KD8CEC
11+
12+
==================================================================
13+
Files modified in Version1.074 Beta
14+
15+
1.Delted Files.
16+
17+
2.Added Files
18+
19+
3.Modified Files
20+
- ubitx_20.ino
21+
- ubitx_ui.ino
22+
- cat_libs.ino
23+
- ubitx.h
24+
- ubitx_eemap.h
25+
- ubitx_lcd_1602.ino
26+
- ubitx_lcd_1602Dual.ino
27+
- ubitx_lcd_2004.ino
28+
-ubitx_wspr.ino
29+
30+

ubitx_20/cat_libs.ino

+30-3
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
along with this program. If not, see <http://www.gnu.org/licenses/>.
3232
3333
**************************************************************************/
34-
#define printLineF1(x) (printLineF(1, x))
35-
#define printLineF2(x) (printLineF(0, x))
34+
35+
#include "ubitx.h"
3636

3737
//for broken protocol
3838
#define CAT_RECEIVE_TIMEOUT 500
@@ -654,7 +654,7 @@ void SetIFSValue(void)
654654
//void CatRxStatus(byte fromType)
655655
void CatRxStatus(void) //for remove warning
656656
{
657-
byte sMeterValue = 1;
657+
byte sMeterValue = 0;
658658

659659
/*
660660
http://www.ka7oei.com/ft817_meow.html
@@ -667,6 +667,33 @@ void CatRxStatus(void) //for remove warning
667667
Bit 7 is 0 if there is a signal present, or 1 if the receiver is squelched.
668668
*/
669669
// 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.
670+
//0~8
671+
switch (scaledSMeter)
672+
{
673+
case 8 : sMeterValue = 0x0B;
674+
break;
675+
case 7 : sMeterValue = 0x0A;
676+
break;
677+
case 6 : sMeterValue = 0x09;
678+
break;
679+
case 5 : sMeterValue = 0x07;
680+
break;
681+
case 4 : sMeterValue = 0x05;
682+
break;
683+
case 3 : sMeterValue = 0x04;
684+
break;
685+
case 2 : sMeterValue = 0x02;
686+
break;
687+
case 1 : sMeterValue = 0x01;
688+
break;
689+
}
690+
691+
/*
692+
sMeterValue = (scaledSMeter * 2) -1;
693+
if (sMeterValue > 0)
694+
sMeterValue--;
695+
*/
696+
670697
CAT_BUFF[0] = sMeterValue & 0b00001111;
671698
SendCatData(1);
672699
}

ubitx_20/ubitx.h

+5-2
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636
#define EXTEND_KEY_GROUP1 //MODE, BAND(-), BAND(+), STEP
3737
//#define EXTEND_KEY_GROUP2 //Numeric (0~9), Point(.), Enter //Not supported in Version 1.0x
3838

39-
#define ENABLE_FACTORYALIGN
40-
//#define ENABLE_ADCMONITOR //Starting with Version 1.07, you can read ADC values directly from uBITX Manager. So this function is not necessary.
39+
//#define ENABLE_FACTORYALIGN
40+
#define ENABLE_ADCMONITOR //Starting with Version 1.07, you can read ADC values directly from uBITX Manager. So this function is not necessary.
4141

4242
extern byte I2C_LCD_MASTER_ADDRESS; //0x27 //if Set I2C Address by uBITX Manager, read from EEProm
4343
extern byte I2C_LCD_SECOND_ADDRESS; //only using Dual LCD Mode
@@ -149,6 +149,9 @@ extern byte I2C_LCD_SECOND_ADDRESS; //only using Dual LCD Mode
149149
extern unsigned long frequency;
150150
extern byte WsprMSGCount;
151151
extern byte sMeterLevels[9];
152+
extern int currentSMeter; //ADC Value for S.Meter
153+
extern byte scaledSMeter; //Calculated S.Meter Level
154+
152155
extern byte KeyValues[16][3]; //Set : Start Value, End Value, Key Type, 16 Set (3 * 16 = 48)
153156

154157
extern void printLine1(const char *c);

ubitx_20/ubitx_20.ino

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// So I put + in the sense that it was improved one by one based on Original Firmware.
77
// This firmware has been gradually changed based on the original firmware created by Farhan, Jack, Jerry and others.
88

9-
#define FIRMWARE_VERSION_INFO F("+v1.073")
9+
#define FIRMWARE_VERSION_INFO F("+v1.074")
1010
#define FIRMWARE_VERSION_NUM 0x02 //1st Complete Project : 1 (Version 1.061), 2st Project : 2
1111

1212
/**
@@ -182,6 +182,10 @@ byte line2DisplayStatus = 0; //0:Clear, 1 : menu, 1: DisplayFrom Idle,
182182
char lcdMeter[17];
183183
byte sMeterLevels[9];
184184

185+
//Current ADC Value for S.Meter, and S Meter Level
186+
int currentSMeter = 0;
187+
byte scaledSMeter = 0;
188+
185189
byte I2C_LCD_MASTER_ADDRESS; //0x27 //if Set I2C Address by uBITX Manager, read from EEProm
186190
byte I2C_LCD_SECOND_ADDRESS; //only using Dual LCD Mode
187191

ubitx_20/ubitx_lcd_1602.ino

+6-16
Original file line numberDiff line numberDiff line change
@@ -708,19 +708,15 @@ void DisplayMeter(byte meterType, byte meterValue, char drawPosition)
708708

709709
LCD_SetCursor(drawPosition, lineNumber);
710710

711-
//for (int i = 0; i <26; i++) //meter 5 + +db 1 = 6
712711
LCD_Write(lcdMeter[0]);
713712
LCD_Write(lcdMeter[1]);
713+
LCD_Write(lcdMeter[2]);
714714
}
715715
}
716716

717-
byte testValue = 0;
718717
char checkCount = 0;
719718
char checkCountSMeter = 0;
720719

721-
int currentSMeter = 0;
722-
byte scaledSMeter = 0;
723-
724720
void idle_process()
725721
{
726722
//space for user graphic display
@@ -740,24 +736,18 @@ void idle_process()
740736
}
741737
}
742738

743-
//EX for Meters
744-
/*
745-
DisplayMeter(0, testValue++, 7);
746-
if (testValue > 30)
747-
testValue = 0;
748-
*/
749-
750739
//S-Meter Display
751740
if (((displayOption1 & 0x08) == 0x08 && (sdrModeOn == 0)) && (++checkCountSMeter > SMeterLatency))
752741
{
753742
int newSMeter;
754743

755744
//VK2ETA S-Meter from MAX9814 TC pin / divide 4 by KD8CEC for reduce EEPromSize
756-
newSMeter = analogRead(ANALOG_SMETER);
745+
newSMeter = analogRead(ANALOG_SMETER) / 4;
757746

758747
//Faster attack, Slower release
759-
currentSMeter = (newSMeter > currentSMeter ? ((currentSMeter * 3 + newSMeter * 7) + 5) / 10 : ((currentSMeter * 7 + newSMeter * 3) + 5) / 10) / 4;
760-
748+
//currentSMeter = (newSMeter > currentSMeter ? ((currentSMeter * 3 + newSMeter * 7) + 5) / 10 : ((currentSMeter * 7 + newSMeter * 3) + 5) / 10) / 4;
749+
currentSMeter = newSMeter;
750+
761751
scaledSMeter = 0;
762752
for (byte s = 8; s >= 1; s--) {
763753
if (currentSMeter > sMeterLevels[s]) {
@@ -766,7 +756,7 @@ void idle_process()
766756
}
767757
}
768758

769-
DisplayMeter(0, scaledSMeter, 14);
759+
DisplayMeter(0, scaledSMeter, 13);
770760
checkCountSMeter = 0; //Reset Latency time
771761
} //end of S-Meter
772762

ubitx_20/ubitx_lcd_1602Dual.ino

+5-8
Original file line numberDiff line numberDiff line change
@@ -583,17 +583,13 @@ void DisplayMeter(byte meterType, byte meterValue, char drawPosition)
583583
LCD_Write('S');
584584

585585
LCD_Write(':');
586-
for (int i = 0; i < 6; i++) //meter 5 + +db 1 = 6
586+
for (int i = 0; i < 7; i++)
587587
LCD_Write(lcdMeter[i]);
588588
}
589589
}
590590

591591

592-
byte testValue = 0;
593592
char checkCount = 0;
594-
595-
int currentSMeter = 0;
596-
byte scaledSMeter = 0;
597593
char checkCountSMeter = 0;
598594

599595
char beforeKeyType = -1;
@@ -676,12 +672,13 @@ void idle_process()
676672
int newSMeter;
677673
displaySDRON = 0;
678674

679-
//VK2ETA S-Meter from MAX9814 TC pin
680-
newSMeter = analogRead(ANALOG_SMETER);
675+
//VK2ETA S-Meter from MAX9814 TC pin / divide 4 by KD8CEC for reduce EEPromSize
676+
newSMeter = analogRead(ANALOG_SMETER) / 4;
681677

682678
//Faster attack, Slower release
683679
//currentSMeter = (newSMeter > currentSMeter ? ((currentSMeter * 3 + newSMeter * 7) + 5) / 10 : ((currentSMeter * 7 + newSMeter * 3) + 5) / 10);
684-
currentSMeter = (currentSMeter * 3 + newSMeter * 7) / 10; //remarked becaused of have already Latency time
680+
//currentSMeter = (currentSMeter * 3 + newSMeter * 7) / 10; //remarked becaused of have already Latency time
681+
currentSMeter = newSMeter;
685682

686683
scaledSMeter = 0;
687684
for (byte s = 8; s >= 1; s--) {

ubitx_20/ubitx_lcd_2004.ino

+5-77
Original file line numberDiff line numberDiff line change
@@ -642,90 +642,16 @@ void DisplayMeter(byte meterType, byte meterValue, char drawPosition)
642642
if (meterType == 0 || meterType == 1 || meterType == 2)
643643
{
644644
drawMeter(meterValue);
645-
//int lineNumber = 0;
646-
//if ((displayOption1 & 0x01) == 0x01)
647-
//lineNumber = 1;
648645

649646
LCD_SetCursor(drawPosition, 2);
650647
LCD_Write('S');
651648
LCD_Write(':');
652-
for (int i = 0; i < 6; i++) //meter 5 + +db 1 = 6
649+
for (int i = 0; i < 7; i++) //meter 5 + +db 1 = 6
653650
LCD_Write(lcdMeter[i]);
654651
}
655652
}
656653

657-
658-
//meterType : 0 = S.Meter, 1 = Forward Power Meter, 2 = SWR Meter
659-
void DisplayMeter(byte meterType, int meterValue, char drawPosition)
660-
{
661-
662-
#ifdef OPTION_SKINNYBARS //We want skinny meter bars with more text/numbers
663-
memcpy(&(line2Buffer[drawPosition]), " ", 8); //Blank that section of 8 characters first
664-
if (meterType == 0) { //SWR meter
665-
drawMeter(meterValue); //Only 2 characters
666-
line2Buffer[drawPosition] = 'S';
667-
byte sValue = round((float)meterValue * 1.5); //6 bars available only to show 9 S values
668-
sValue = sValue > 9 ? 9 : sValue; //Max S9
669-
line2Buffer[drawPosition + 1] = '0' + sValue; //0 to 9
670-
memcpy(&(line2Buffer[drawPosition + 2]), lcdMeter, 2); //Copy the S-Meter bars
671-
//Add the +10, +20, etc...
672-
if (meterValue > 6) {
673-
//We are over S9
674-
line2Buffer[drawPosition + 4] = '+';
675-
line2Buffer[drawPosition + 5] = '0' + meterValue - 6; //1,2,3 etc...
676-
line2Buffer[drawPosition + 6] = '0';
677-
}
678-
} else if (meterType == 1) { //Forward Power
679-
drawMeter(round((float)meterValue / 40)); //4 watts per bar
680-
//meterValue contains power value x 10 (one decimal point)
681-
line2Buffer[drawPosition] = 'P';
682-
meterValue = meterValue > 999 ? 999 : meterValue; //Limit to 99.9 watts!!!!
683-
//Remove decimal value and divide by 10
684-
meterValue = round((float)meterValue / 10);
685-
if (meterValue < 10) {
686-
line2Buffer[drawPosition + 1] = ' ';
687-
line2Buffer[drawPosition + 2] = '0' + meterValue; //0 to 9
688-
} else {
689-
line2Buffer[drawPosition + 1] = '0' + meterValue / 10;
690-
line2Buffer[drawPosition + 2] = '0' + (meterValue - ((meterValue / 10) * 10));
691-
}
692-
line2Buffer[drawPosition + 3] = 'W';
693-
memcpy(&(line2Buffer[drawPosition + 4]), lcdMeter, 2); //Copy the S-Meter bars
694-
} else { //SWR
695-
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...
696-
//meterValue contains SWR x 100 (two decimal point)
697-
memcpy(&(line2Buffer[drawPosition]), "SWR", 3);
698-
meterValue = round((float)meterValue / 10); //We now have swr x 10 (1 decimal point)
699-
if (meterValue < 100) { //10 to 99, no decimal point
700-
//Draw the decimal value
701-
line2Buffer[drawPosition + 3] = '0' + meterValue / 10;
702-
line2Buffer[drawPosition + 4] = '.';
703-
line2Buffer[drawPosition + 5] = '0' + (meterValue - ((meterValue / 10) * 10));
704-
} else {
705-
memcpy(&(line2Buffer[drawPosition + 3]), "10+", 3); //over 10
706-
}
707-
memcpy(&(line2Buffer[drawPosition + 6]), lcdMeter, 2); //Copy the S-Meter bars
708-
}
709-
#else //We want fat bars, easy to read, with less text/numbers
710-
//Serial.print("In displaymeter, meterValue: "); Serial.println(meterValue);
711-
drawMeter(meterValue);
712-
//Always line 2
713-
char sym = 'S';
714-
if (meterType == 1) sym = 'P';
715-
else if (meterType == 2) sym = 'R'; //For SWR
716-
line2Buffer[drawPosition] = sym;
717-
memcpy(&(line2Buffer[drawPosition + 1]), lcdMeter, 7);
718-
#endif //OPTION_SKINNYBARS
719-
720-
}
721-
722-
723-
byte testValue = 0;
724654
char checkCount = 0;
725-
726-
int currentSMeter = 0;
727-
//int sMeterLevels[] = {0, 5, 17, 41, 74, 140, 255, 365, 470};
728-
byte scaledSMeter = 0;
729655
char checkCountSMeter = 0;
730656

731657
//execute interval : 0.25sec
@@ -769,10 +695,12 @@ void idle_process()
769695
int newSMeter;
770696

771697
//VK2ETA S-Meter from MAX9814 TC pin
772-
newSMeter = analogRead(ANALOG_SMETER);
698+
newSMeter = analogRead(ANALOG_SMETER) / 4;
773699

774700
//Faster attack, Slower release
775-
currentSMeter = (newSMeter > currentSMeter ? ((currentSMeter * 3 + newSMeter * 7) + 5) / 10 : ((currentSMeter * 7 + newSMeter * 3) + 5) / 10);
701+
//currentSMeter = (newSMeter > currentSMeter ? ((currentSMeter * 3 + newSMeter * 7) + 5) / 10 : ((currentSMeter * 7 + newSMeter * 3) + 5) / 10);
702+
//currentSMeter = ((currentSMeter * 7 + newSMeter * 3) + 5) / 10;
703+
currentSMeter = newSMeter;
776704

777705
scaledSMeter = 0;
778706
for (byte s = 8; s >= 1; s--) {

ubitx_20/ubitx_ui.ino

+17-5
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ void initMeter(){
9595

9696
for (i = 0; i < 8; i++)
9797
tmpbytes[i] = pgm_read_byte(p_metes_bitmap + i + 48);
98-
LCD_CreateChar(6, tmpbytes);
98+
LCD_CreateChar(7, tmpbytes);
9999
}
100100

101101

@@ -128,13 +128,23 @@ void drawMeter(int needle)
128128
{
129129
#ifdef OPTION_SKINNYBARS
130130
//Fill buffer with growing set of bars, up to needle value
131+
lcdMeter[0] = 0x20;
132+
lcdMeter[1] = 0x20;
131133
for (int i = 0; i < 6; i++) {
132134
if (needle > i)
133135
lcdMeter[i / 3] = byte(i + 1); //Custom characters above
134-
else if (i == 1 || i == 4) {
135-
lcdMeter[i / 3] = 0x20; //blank
136-
}
136+
//else if (i == 1 || i == 4) {
137+
// lcdMeter[i / 3] = 0x20; //blank
138+
//}
137139
}
140+
141+
if (needle > 7) {
142+
lcdMeter[2] = byte(7); //Custom character "++"
143+
} else if (needle > 6) {
144+
lcdMeter[2] = '+'; //"+"
145+
} else lcdMeter[2] = 0x20;
146+
147+
138148
#else //Must be "fat" bars
139149
//Fill buffer with growing set of bars, up to needle value
140150
for (int i = 0; i < 6; i++) {
@@ -143,11 +153,13 @@ void drawMeter(int needle)
143153
else
144154
lcdMeter[i] = 0x20; //blank
145155
}
156+
146157
if (needle > 7) {
147158
lcdMeter[6] = byte(7); //Custom character "++"
148159
} else if (needle > 6) {
149-
lcdMeter[6] = 0x2B; //"+"
160+
lcdMeter[6] = '+'; //"+"
150161
} else lcdMeter[6] = 0x20;
162+
151163
#endif //OPTION_FATBARS
152164
}
153165

0 commit comments

Comments
 (0)