@@ -642,90 +642,16 @@ void DisplayMeter(byte meterType, byte meterValue, char drawPosition)
642
642
if (meterType == 0 || meterType == 1 || meterType == 2 )
643
643
{
644
644
drawMeter (meterValue);
645
- // int lineNumber = 0;
646
- // if ((displayOption1 & 0x01) == 0x01)
647
- // lineNumber = 1;
648
645
649
646
LCD_SetCursor (drawPosition, 2 );
650
647
LCD_Write (' S' );
651
648
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
653
650
LCD_Write (lcdMeter[i]);
654
651
}
655
652
}
656
653
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 ;
724
654
char checkCount = 0 ;
725
-
726
- int currentSMeter = 0 ;
727
- // int sMeterLevels[] = {0, 5, 17, 41, 74, 140, 255, 365, 470};
728
- byte scaledSMeter = 0 ;
729
655
char checkCountSMeter = 0 ;
730
656
731
657
// execute interval : 0.25sec
@@ -769,10 +695,12 @@ void idle_process()
769
695
int newSMeter;
770
696
771
697
// VK2ETA S-Meter from MAX9814 TC pin
772
- newSMeter = analogRead (ANALOG_SMETER);
698
+ newSMeter = analogRead (ANALOG_SMETER) / 4 ;
773
699
774
700
// 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;
776
704
777
705
scaledSMeter = 0 ;
778
706
for (byte s = 8 ; s >= 1 ; s--) {
0 commit comments