Fix for compass page

This commit is contained in:
norbert-walter 2025-07-04 14:11:22 +02:00
parent 07a1b2388e
commit d1c620a858
3 changed files with 167 additions and 156 deletions

View File

@ -20,7 +20,7 @@ const int ShowDBS = 5;
const int Compass_X0 = 200; // center point of compass band
const int Compass_Y0 = 220; // position of compass lines
const int Compass_LineLength = 22; // length of compass lines
const float Compass_LineDelta = 8.0; // compass band: 1deg = 5 Pixels, 10deg = 50 Pixels
const float Compass_LineDelta = 8.0;// compass band: 1deg = 5 Pixels, 10deg = 50 Pixels
class PageCompass : public Page
{
@ -65,7 +65,6 @@ class PageCompass : public Page
GwConfigHandler *config = commonData->config;
GwLog *logger = commonData->logger;
// Old values for hold function
static String OldDataText[HowManyValues] = {"", "", "","", "", ""};
static String OldDataUnits[HowManyValues] = {"", "", "","", "", ""};
@ -113,9 +112,9 @@ class PageCompass : public Page
getdisplay().setPartialWindow(0, 0, getdisplay().width(), getdisplay().height()); // Set partial update
getdisplay().setTextColor(commonData->fgcolor);
// Horizontal line 3 pix top & bottom
// print Data on top half
getdisplay().fillRect(0, 23, 400, 3, commonData->fgcolor);
// Horizontal line 2 pix top & bottom
// Print data on top half
getdisplay().fillRect(0, 130, 400, 2, commonData->fgcolor);
getdisplay().setFont(&Ubuntu_Bold20pt7b);
getdisplay().setCursor(10, 70);
getdisplay().print(DataName[WhichDataDisplay]); // Page name
@ -123,7 +122,7 @@ class PageCompass : public Page
getdisplay().setFont(&Ubuntu_Bold12pt7b);
getdisplay().setCursor(10, 120);
getdisplay().print(DataUnits[WhichDataDisplay]);
getdisplay().setCursor(200, 120);
getdisplay().setCursor(190, 120);
getdisplay().setFont(&DSEG7Classic_BoldItalic42pt7b);
if(holdvalues == false){
@ -136,8 +135,9 @@ class PageCompass : public Page
OldDataText[WhichDataDisplay] = DataText[WhichDataDisplay]; // Save the old value
OldDataUnits[WhichDataDisplay] = DataUnits[WhichDataDisplay]; // Save the old unit
}
// now draw compass band
// get the data
// Now draw compass band
// Get the data
double TheAngle = DataValue[WhichDataCompass];
static double AvgAngle = 0;
AvgAngle = ( AvgAngle * AverageValues + TheAngle ) / (AverageValues + 1 );
@ -153,10 +153,10 @@ class PageCompass : public Page
getdisplay().print(DataName[WhichDataCompass]); // Page name
// draw compass base line and pointer
// Draw compass base line and pointer
getdisplay().fillRect(0, Compass_Y0, 400, 3, commonData->fgcolor);
getdisplay().fillTriangle(Compass_X0,Compass_Y0-40,Compass_X0-10,Compass_Y0-80,Compass_X0+10,Compass_Y0-80,commonData->fgcolor);
// draw trendlines
// Draw trendlines
for ( int i = 1; i < abs(TheTrend) / 2; i++){
int x1;
if ( TheTrend < 0 )
@ -164,29 +164,28 @@ class PageCompass : public Page
else
x1 = Compass_X0 - 20 * ( i + 1 );
getdisplay().fillRect(x1, Compass_Y0 -60, 10, 6, commonData->fgcolor);
getdisplay().fillRect(x1, Compass_Y0 -55, 10, 6, commonData->fgcolor);
}
// central line + satellite lines
double NextSector = round(TheAngle / ( M_PI / 9 )) * ( M_PI / 9 ); // get the next 20degree value
double Offset = - ( NextSector - TheAngle); // offest of the center line compared to TheAngle in Radian
// Central line + satellite lines
double NextSector = round(TheAngle / ( M_PI / 9 )) * ( M_PI / 9 ); // Get the next 20degree value
double Offset = - ( NextSector - TheAngle); // Offest of the center line compared to TheAngle in Radian
int Delta_X = int ( Offset * 180.0 / M_PI * Compass_LineDelta );
for ( int i = 0; i <=4; i++ )
{
for ( int i = 0; i <=4; i++ ){
int x0;
x0 = Compass_X0 + Delta_X + 2 * i * 5 * Compass_LineDelta;
getdisplay().fillRect(x0-1, Compass_Y0 - 2 * Compass_LineLength,3, 2 * Compass_LineLength, commonData->fgcolor);
getdisplay().fillRect(x0-2, Compass_Y0 - 2 * Compass_LineLength, 5, 2 * Compass_LineLength, commonData->fgcolor);
x0 = Compass_X0 + Delta_X + ( 2 * i + 1 ) * 5 * Compass_LineDelta;
getdisplay().fillRect(x0-1, Compass_Y0 - Compass_LineLength,3, Compass_LineLength, commonData->fgcolor);
getdisplay().fillRect(x0-1, Compass_Y0 - Compass_LineLength, 3, Compass_LineLength, commonData->fgcolor);
x0 = Compass_X0 + Delta_X - 2 * i * 5 * Compass_LineDelta;
getdisplay().fillRect(x0-1, Compass_Y0 - 2 * Compass_LineLength,3, 2 * Compass_LineLength, commonData->fgcolor);
getdisplay().fillRect(x0-2, Compass_Y0 - 2 * Compass_LineLength, 5, 2 * Compass_LineLength, commonData->fgcolor);
x0 = Compass_X0 + Delta_X - ( 2 * i + 1 ) * 5 * Compass_LineDelta;
getdisplay().fillRect(x0-1, Compass_Y0 - Compass_LineLength,3, Compass_LineLength, commonData->fgcolor);
getdisplay().fillRect(x0-1, Compass_Y0 - Compass_LineLength, 3, Compass_LineLength, commonData->fgcolor);
}
getdisplay().fillRect(0, Compass_Y0, 400, 3, commonData->fgcolor);
// add the numbers to the compass band
// Add the numbers to the compass band
int x0;
float AngleToDisplay = NextSector * 180.0 / M_PI;
@ -211,7 +210,7 @@ class PageCompass : public Page
do {
getdisplay().setCursor(x0 - 40, Compass_Y0 + 40);
snprintf(buffer,bsize,"%03.0f", AngleToDisplay);
// quick and dirty way to prevent wrapping text in next line
// Quick and dirty way to prevent wrapping text in next line
if ( ( x0 - 40 ) > 380 )
buffer[0] = 0;
else if ( ( x0 - 40 ) > 355 )

View File

@ -1187,6 +1187,7 @@
"Battery",
"Battery2",
"Clock",
"Compass",
"DST810",
"Fluid",
"FourValues",
@ -1466,6 +1467,7 @@
"Battery",
"Battery2",
"Clock",
"Compass",
"DST810",
"Fluid",
"FourValues",
@ -1742,6 +1744,7 @@
"Battery",
"Battery2",
"Clock",
"Compass",
"DST810",
"Fluid",
"FourValues",
@ -2015,6 +2018,7 @@
"Battery",
"Battery2",
"Clock",
"Compass",
"DST810",
"Fluid",
"FourValues",
@ -2285,6 +2289,7 @@
"Battery",
"Battery2",
"Clock",
"Compass",
"DST810",
"Fluid",
"FourValues",
@ -2552,6 +2557,7 @@
"Battery",
"Battery2",
"Clock",
"Compass",
"DST810",
"Fluid",
"FourValues",
@ -2816,6 +2822,7 @@
"Battery",
"Battery2",
"Clock",
"Compass",
"DST810",
"Fluid",
"FourValues",
@ -3077,6 +3084,7 @@
"Battery",
"Battery2",
"Clock",
"Compass",
"DST810",
"Fluid",
"FourValues",
@ -3335,6 +3343,7 @@
"Battery",
"Battery2",
"Clock",
"Compass",
"DST810",
"Fluid",
"FourValues",
@ -3590,6 +3599,7 @@
"Battery",
"Battery2",
"Clock",
"Compass",
"DST810",
"Fluid",
"FourValues",

View File

@ -285,6 +285,8 @@ void registerAllPages(PageList &list){
list.add(&registerPageDST810);
extern PageDescription registerPageClock;
list.add(&registerPageClock);
extern PageDescription registerPageCompass;
list.add(&registerPageCompass);
extern PageDescription registerPageWhite;
list.add(&registerPageWhite);
extern PageDescription registerPageBME280;