mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-17 05:15:23 +03:00
Merge pull request #1457 from tednv/displaytrimdev
add accelerometer trim to display
This commit is contained in:
commit
d690e74b08
7 changed files with 904 additions and 837 deletions
|
@ -3,14 +3,19 @@
|
|||
INAV supports displays to provide information to you about your aircraft and iNav state.
|
||||
|
||||
When the aircraft is armed, an "Armed" message is displayed. When it is disarmed, a summary page is displayed. Page cycling has been removed and no other information is currently available
|
||||
<img src="https://cloud.githubusercontent.com/assets/11059099/13985203/1a4c7f40-f147-11e5-83f0-608d9771fdda.jpg"/>
|
||||
<img src="https://camo.githubusercontent.com/41c25ff52e6d1e08d09bc4f85c28be022bfac7f0/68747470733a2f2f717561646d6575702e736874722e65752f77702d636f6e74656e742f75706c6f6164732f323031362f30332f6f6c65645f646973706c61792e6a7067"/>
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
There is currently no way to change the information on the display
|
||||
|
||||
## Supported Hardware
|
||||
I2c IIC Serial Oled LCD LED Module 12864 (<a href="http://a.co/5hxXEvZ">http://a.co/5hxXEvZ</a> used in status image above)
|
||||
|
||||
At this time no other displays are supported other than the SSD1306 / UG-2864HSWEG01.
|
||||
SSD1306
|
||||
|
||||
UG-2864HSWEG01
|
||||
|
||||
## Configuration
|
||||
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 196 KiB After Width: | Height: | Size: 196 KiB |
File diff suppressed because it is too large
Load diff
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
BIN
docs/assets/images/inav_display_armed.jpg
Normal file
BIN
docs/assets/images/inav_display_armed.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 162 KiB |
BIN
docs/assets/images/inav_display_status.jpg
Normal file
BIN
docs/assets/images/inav_display_status.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 53 KiB |
|
@ -61,6 +61,7 @@
|
|||
#include "sensors/sensors.h"
|
||||
#include "sensors/compass.h"
|
||||
#include "sensors/acceleration.h"
|
||||
#include "sensors/boardalignment.h"
|
||||
#include "sensors/gyro.h"
|
||||
#include "sensors/barometer.h"
|
||||
|
||||
|
@ -87,33 +88,75 @@ static char lineBuffer[SCREEN_CHARACTER_COLUMN_COUNT + 1];
|
|||
#define IS_SCREEN_CHARACTER_COLUMN_COUNT_ODD (SCREEN_CHARACTER_COLUMN_COUNT & 1)
|
||||
|
||||
#if defined(DASHBOARD_ARMED_BITMAP)
|
||||
static uint8_t armedBitmapRLE [] = { 128, 32,
|
||||
'\x00','\x00','\x87','\xc0','\xe0','\xf8','\xfc','\xfc', // 0x0008
|
||||
'\x02','\x7e','\x3e','\x1f','\x0f','\x0f','\x06','\xcf', // 0x0010
|
||||
'\xff','\xff','\x04','\x7f','\x1f','\x8e','\xe0','\xf0', // 0x0018
|
||||
'\xfc','\xfe','\x7f','\x3f','\x0f','\x0f','\x06','\x8f', // 0x0020
|
||||
'\xcf','\xff','\xff','\x04','\x7f','\x1f','\x8e','\xe0', // 0x0028
|
||||
'\xf0','\xfc','\xfe','\x7f','\x3f','\x0f','\x0f','\x06', // 0x0030
|
||||
'\xcf','\xef','\xff','\xff','\x03','\x7f','\x1f','\x0f', // 0x0038
|
||||
'\x0f','\x06','\xcf','\xff','\xff','\x04','\x7f','\x1f', // 0x0040
|
||||
'\x8e','\xe0','\xf0','\xfc','\xfe','\xff','\xbf','\x8f', // 0x0048
|
||||
'\x8f','\x05','\x0f','\x0f','\x08','\x07','\x07','\x02', // 0x0050
|
||||
'\x83','\xe3','\xf1','\xfd','\xfe','\x7f','\x3f','\x0f', // 0x0058
|
||||
'\x0f','\x07','\xcf','\xff','\xff','\x04','\x7f','\x1f', // 0x0060
|
||||
'\x0e','\x00','\x00','\x03','\x80','\xc0','\xf0','\xf8', // 0x0068
|
||||
'\xfe','\x7f','\x3f','\x1f','\x0f','\x0f','\x06','\x8f', // 0x0070
|
||||
'\xef','\xff','\xff','\x03','\x7f','\x3f','\x8f','\xc7', // 0x0078
|
||||
'\xf3','\xf8','\xfe','\xff','\x3f','\x1f','\x0f','\x0f', // 0x0080
|
||||
'\x06','\x8f','\xcf','\xff','\xff','\x04','\x3f','\x9f', // 0x0088
|
||||
'\xc3','\xf1','\xf8','\xfc','\xff','\x3f','\x1f','\x07', // 0x0090
|
||||
'\x03','\x00','\x00','\x03','\x80','\xc0','\xf0','\xf8', // 0x0098
|
||||
'\xfe','\xff','\x3f','\x1f','\x07','\x03','\x00','\x00', // 0x00a0
|
||||
'\x03','\x80','\xc0','\xf0','\xf8','\xfe','\xff','\x3f', // 0x00a8
|
||||
'\x9f','\xc7','\xf3','\xf8','\xfc','\xff','\xff','\x03', // 0x00b0
|
||||
'\xf7','\xf3','\xf3','\x04','\xf1','\xf1','\x03','\xf0', // 0x00b8
|
||||
'\xf0','\x09','\xf8','\xfe','\xff','\xff','\x03','\xf7', // 0x00c0
|
||||
'\xf3','\xf0','\xf0','\x06','\xf8','\x7c','\x7e','\x3f', // 0x00c8
|
||||
'\x3f','\x02','\x1f','\x07','\x03','\x00','\x00','\x86', // 0x00d0
|
||||
static uint8_t armedBitmapRLE [] = { 128, 64,
|
||||
'\x00','\x00','\x04','\x80','\x80','\x03','\xc0','\xc0', // 0x0008
|
||||
'\x02','\x80','\x80','\x03','\x00','\x00','\x0b','\x80', // 0x0010
|
||||
'\x80','\x02','\xc0','\xc0','\x02','\x80','\x80','\x03', // 0x0018
|
||||
'\x00','\x00','\x63','\xfc','\xfe','\xdf','\x03','\x01', // 0x0020
|
||||
'\x71','\x79','\xf9','\xf1','\xc1','\x83','\x8f','\xfe', // 0x0028
|
||||
'\xfc','\x00','\x00','\x04','\xf8','\xfe','\xff','\x07', // 0x0030
|
||||
'\x83','\xf1','\xf1','\x02','\x79','\x71','\x21','\x03', // 0x0038
|
||||
'\x87','\xfe','\xfc','\x70','\x00','\x00','\x07','\xff', // 0x0040
|
||||
'\xff','\x03','\x00','\x00','\x05','\xff','\xff','\x03', // 0x0048
|
||||
'\x3f','\x7c','\xf8','\xf0','\xc0','\x80','\x00','\x00', // 0x0050
|
||||
'\x0b','\xfe','\xff','\xff','\x03','\x00','\x00','\x0c', // 0x0058
|
||||
'\xc0','\xf0','\xfe','\x7f','\x0f','\x7f','\xfe','\xf8', // 0x0060
|
||||
'\xc0','\x00','\x00','\x06','\x07','\x1f','\xff','\xfc', // 0x0068
|
||||
'\xf0','\x80','\x00','\x00','\x0e','\xe0','\xf8','\xfe', // 0x0070
|
||||
'\x3f','\x0f','\x01','\x00','\x00','\x03','\x01','\x03', // 0x0078
|
||||
'\x07','\x0e','\x0e','\x02','\x0c','\x0c','\x03','\x0d', // 0x0080
|
||||
'\x0b','\x03','\xff','\xfe','\xfe','\x02','\x86','\x07', // 0x0088
|
||||
'\x07','\x02','\x87','\xce','\xfe','\xff','\x23','\x03', // 0x0090
|
||||
'\x0d','\x0c','\x0c','\x04','\x0e','\x07','\x03','\x01', // 0x0098
|
||||
'\x00','\x00','\x08','\xff','\xff','\x03','\x00','\x00', // 0x00a0
|
||||
'\x05','\xff','\xff','\x03','\xfe','\x00','\x00','\x02', // 0x00a8
|
||||
'\x03','\x07','\x1f','\x3e','\x7c','\xf8','\xe0','\xc0', // 0x00b0
|
||||
'\x00','\x00','\x06','\xff','\xff','\x04','\x00','\x00', // 0x00b8
|
||||
'\x09','\xe0','\xf8','\xff','\x3f','\x07','\x01','\x00', // 0x00c0
|
||||
'\x00','\x03','\x01','\x07','\x3f','\xff','\xf8','\xe0', // 0x00c8
|
||||
'\x80','\x00','\x00','\x05','\x03','\x1f','\x7f','\xfe', // 0x00d0
|
||||
'\xf0','\xc0','\x00','\x00','\x08','\xe0','\xfc','\xff', // 0x00d8
|
||||
'\x3f','\x07','\x01','\x00','\x00','\x06','\xe0','\xf8', // 0x00e0
|
||||
'\x7c','\x1c','\x0e','\xc6','\xc6','\x03','\xe6','\x74', // 0x00e8
|
||||
'\x38','\x78','\xe3','\xe7','\x1f','\x3f','\x3f','\x02', // 0x00f0
|
||||
'\x1f','\xef','\xe7','\xf9','\x38','\x78','\xf6','\xe6', // 0x00f8
|
||||
'\xc6','\xc6','\x02','\x8e','\x0c','\x3c','\xf8','\xf0', // 0x0100
|
||||
'\xc0','\x00','\x00','\x07','\xff','\xff','\x03','\x00', // 0x0108
|
||||
'\x00','\x05','\xff','\xff','\x04','\x00','\x00','\x07', // 0x0110
|
||||
'\x01','\x03','\x07','\x1f','\x3e','\xfc','\xf0','\xe0', // 0x0118
|
||||
'\x80','\x0f','\xff','\xff','\x03','\x00','\x00','\x05', // 0x0120
|
||||
'\x80','\xe0','\xfc','\xff','\x3f','\x0f','\x0c','\x0c', // 0x0128
|
||||
'\x0b','\x0f','\x1f','\xff','\xfc','\xf0','\x80','\x00', // 0x0130
|
||||
'\x00','\x05','\x03','\x0f','\x7f','\xfe','\xf8','\xc0', // 0x0138
|
||||
'\x00','\x80','\xf0','\xfc','\xff','\x3f','\x07','\x00', // 0x0140
|
||||
'\x00','\x0a','\x07','\x1f','\x1e','\x38','\x30','\x71', // 0x0148
|
||||
'\x63','\x63','\x02','\x71','\x30','\x38','\x1e','\x0f', // 0x0150
|
||||
'\x07','\x00','\x00','\x04','\x03','\x0f','\x1f','\x38', // 0x0158
|
||||
'\x30','\x71','\x63','\x63','\x02','\x73','\x31','\x38', // 0x0160
|
||||
'\x3c','\x1f','\x0f','\x03','\x00','\x00','\x07','\x1f', // 0x0168
|
||||
'\x3f','\x3f','\x02','\x00','\x00','\x05','\x1f','\x3f', // 0x0170
|
||||
'\x3f','\x02','\x0f','\x00','\x00','\x0d','\x01','\x03', // 0x0178
|
||||
'\x0f','\x1f','\x3f','\x3f','\x02','\x1f','\x00','\x00', // 0x0180
|
||||
'\x03','\x10','\x3c','\x3f','\x1f','\x03','\x00','\x00', // 0x0188
|
||||
'\x11','\x03','\x1f','\x3f','\x3e','\x18','\x00','\x00', // 0x0190
|
||||
'\x06','\x01','\x0f','\x1f','\x3f','\x3f','\x02','\x1f', // 0x0198
|
||||
'\x03','\x00','\x00','\xaf','\xc0','\xf0','\xf8','\x38', // 0x01a0
|
||||
'\xf8','\xf8','\x02','\xe0','\x00','\x00','\x04','\xf8', // 0x01a8
|
||||
'\xf8','\x03','\x18','\x18','\x03','\xf8','\xf8','\x02', // 0x01b0
|
||||
'\xf0','\x00','\x00','\x02','\xf8','\xf8','\x03','\x38', // 0x01b8
|
||||
'\xf8','\xe0','\x00','\xe0','\xf8','\x38','\xf8','\xf8', // 0x01c0
|
||||
'\x03','\x00','\x00','\x02','\xf8','\xf8','\x03','\x98', // 0x01c8
|
||||
'\x98','\x05','\x18','\x00','\x00','\x02','\xf8','\xf8', // 0x01d0
|
||||
'\x03','\x18','\x18','\x04','\x38','\xf8','\xf0','\xe0', // 0x01d8
|
||||
'\x00','\x00','\x42','\x20','\x38','\x3e','\x3f','\x0f', // 0x01e0
|
||||
'\x07','\x06','\x06','\x02','\x0f','\x3f','\x3f','\x02', // 0x01e8
|
||||
'\x3c','\x20','\x00','\x3f','\x3f','\x03','\x00','\x03', // 0x01f0
|
||||
'\x1f','\x3f','\x39','\x20','\x00','\x00','\x02','\x3f', // 0x01f8
|
||||
'\x3f','\x03','\x00','\x0f','\x3f','\x3c','\x0f','\x01', // 0x0200
|
||||
'\x00','\x3f','\x3f','\x03','\x00','\x00','\x02','\x3f', // 0x0208
|
||||
'\x3f','\x03','\x31','\x31','\x05','\x30','\x00','\x00', // 0x0210
|
||||
'\x02','\x3f','\x3f','\x03','\x30','\x30','\x04','\x3c', // 0x0218
|
||||
'\x1f','\x0f','\x07','\x00','\x00','\x22',
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -332,8 +375,6 @@ static void showStatusPage(void)
|
|||
drawHorizonalPercentageBar(10, capacityPercentage);
|
||||
}
|
||||
|
||||
rowIndex++;
|
||||
|
||||
#ifdef GPS
|
||||
if (feature(FEATURE_GPS)) {
|
||||
tfp_sprintf(lineBuffer, "Sats: %d", gpsSol.numSat);
|
||||
|
@ -378,6 +419,13 @@ static void showStatusPage(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
rowIndex++;
|
||||
char rollTrim[7], pitchTrim[7];
|
||||
formatTrimDegrees(rollTrim, boardAlignment()->rollDeciDegrees);
|
||||
formatTrimDegrees(pitchTrim, boardAlignment()->pitchDeciDegrees);
|
||||
tfp_sprintf(lineBuffer, "Acc: %sR, %sP", rollTrim, pitchTrim );
|
||||
i2c_OLED_set_line(rowIndex++);
|
||||
i2c_OLED_send_string(lineBuffer);
|
||||
}
|
||||
|
||||
void dashboardUpdate(timeUs_t currentTimeUs)
|
||||
|
@ -503,3 +551,15 @@ void dashboardSetNextPageChangeAt(timeUs_t futureMicros)
|
|||
nextPageAt = futureMicros;
|
||||
}
|
||||
#endif
|
||||
|
||||
void formatTrimDegrees ( char *formattedTrim, int16_t trimValue ) {
|
||||
char trim[6];
|
||||
sprintf(trim, "%d", trimValue);
|
||||
int x = strlen(trim)-1;
|
||||
strncpy(formattedTrim,trim,x);
|
||||
formattedTrim[x] = '\0';
|
||||
if (trimValue !=0) {
|
||||
strcat(formattedTrim,".");
|
||||
}
|
||||
strcat(formattedTrim,trim+x);
|
||||
}
|
||||
|
|
|
@ -26,3 +26,5 @@ void dashboardUpdate(timeUs_t currentTimeUs);
|
|||
|
||||
void dashboardSetPage(pageId_e newPageId);
|
||||
void dashboardSetNextPageChangeAt(timeUs_t futureMicros);
|
||||
|
||||
void formatTrimDegrees ( char formattedTrim[7], int16_t trimValue );
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue