Skip to content

Commit 72089e1

Browse files
authored
Merge pull request #4 from themelisx/gauge_refactor
* Gauge refactor * Added Display Manager * Various bug fixes
2 parents 193b0fb + 16bf523 commit 72089e1

23 files changed

+1168
-846
lines changed

include/configuration.h

+50-18
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1+
//////////////
2+
// Settings //
3+
//////////////
4+
//#define MODE_DEBUG_FULL
5+
//#define MODE_DEBUG
6+
#define MODE_RELEASE
7+
8+
// Enable EEPROM to save settings in EEPROM
9+
#define ENABLE_EEPROM
10+
//#define CLEAR_SETTINGS
11+
12+
#ifdef ESP32
13+
// Dual Core
14+
#define USE_MULTI_THREAD
15+
#endif
16+
17+
#ifdef ESP8266
18+
//
19+
#define DRAW_FAST
20+
#endif
21+
122
//////////////////
223
// OBD - ELM327 //
324
//////////////////
@@ -11,26 +32,36 @@
1132
// Enable only one of the follow
1233
// Values are in defines.h
1334

14-
//#define MOCK_OBD_LOW_VALUES
35+
#define MOCK_OBD_LOW_VALUES
1536
//#define MOCK_OBD_NORMAL_VALUES
16-
#define MOCK_OBD_HIGH_VALUES
17-
37+
//#define MOCK_OBD_HIGH_VALUES
1838

19-
//////////////
20-
// Settings //
21-
//////////////
22-
23-
#ifdef ESP32
24-
// Enable EEPROM to save settings in EEPROM
25-
#define ENABLE_EEPROM
26-
27-
// Dual Core
28-
#define USE_MULTI_THREAD
29-
#endif
30-
31-
#ifdef ESP8266
32-
#define DRAW_FAST
33-
#endif
39+
////////////
40+
// Gauges //
41+
////////////
42+
#define GAUGE_BATTERY_VOLTAGE
43+
#define GAUGE_KMH
44+
#define GAUGE_RPM
45+
#define GAUGE_COOLANT_TEMP
46+
#define GAUGE_INTAKE_TEMP
47+
#define GAUGE_TIMING_ADV
48+
#define GAUGE_ENGINE_LOAD
49+
#define GAUGE_SHORT_FUEL_TRIM
50+
#define GAUGE_LONG_FUEL_TRIM
51+
#define GAUGE_THROTTLE
52+
//#define GAUGE_MAF_RATE
53+
//#define GAUGE_FUEL_LEVEL
54+
//#define GAUGE_AMBIENT_TEMP
55+
//#define GAUGE_OIL_TEMP
56+
//#define GAUGE_ABS_LOAD
57+
#define SECONDARY_GAUGE_KMH
58+
#define SECONDARY_GAUGE_RPM
59+
#define SECONDARY_GAUGE_COOLANT_TEMP
60+
#define SECONDARY_GAUGE_INTAKE_TEMP
61+
#define SECONDARY_GAUGE_SHORT_FUEL_TRIM
62+
#define SECONDARY_GAUGE_LONG_FUEL_TRIM
63+
//#define SECONDARY_GAUGE_ENGINE_LOAD
64+
//#define SECONDARY_GAUGE_THROTTLE
3465

3566

3667
/////////////////
@@ -69,6 +100,7 @@
69100
// Keypad //
70101
////////////
71102
//#define USE_MOCK_KEYPAD
103+
#define BUTTON_PRESSED HIGH
72104

73105

74106

include/defines.h

+16-10
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@
4141
#endif
4242

4343
#ifdef MOCK_OBD_HIGH_VALUES
44-
#define MOCK_OBD_batteryVoltage 148
44+
#define MOCK_OBD_batteryVoltage 140
4545
#define MOCK_OBD_kph 180
46-
#define MOCK_OBD_rpm 7500
47-
#define MOCK_OBD_engineCoolantTemp 120
48-
#define MOCK_OBD_intakeAirTemp 95
46+
#define MOCK_OBD_rpm 6000
47+
#define MOCK_OBD_engineCoolantTemp 100
48+
#define MOCK_OBD_intakeAirTemp 80
4949
#define MOCK_OBD_timingAdvance 40
5050
#define MOCK_OBD_engineLoad 85
5151
#define MOCK_OBD_mafRate 7
@@ -93,19 +93,26 @@
9393
#ifdef ESP32
9494
#define TFT1_CS 5
9595
#define TFT1_DC 17
96+
#define TFT2_CS 15
97+
#define TFT2_DC 17
9698
#endif
99+
97100
#ifdef ESP8266
98101
#define TFT1_CS D0
99102
#define TFT1_DC D3
103+
#define TFT2_CS D4
104+
#define TFT2_DC D1
100105
#endif
101106

102-
#define TFT2_DC 17
103-
#define TFT2_CS 15
107+
#define TFT1_HEIGHT 240
108+
#define TFT1_WIDTH 240
109+
#define TFT2_HEIGHT 240
110+
#define TFT2_WIDTH 240
104111

105112
#define TEST_KEY_DELAY 10000
106113
#define DELAY_MAIN_MENU_TASK 100
107114
#define DELAY_MAIN_TASK 1000
108-
#define DELAY_REFRESH_VIEW 100
115+
#define DELAY_REFRESH_VIEW 50
109116

110117
#define DELAY_ODB 50
111118
#define DELAY_READING 10
@@ -149,9 +156,7 @@
149156
#define VIEW_LONG_FUEL_TRIM 9
150157
#define VIEW_THROTTLE 10
151158
#define VIEW_MAF_RATE 11
152-
//supportedPIDs_21_40
153159
#define VIEW_FUEL_LEVEL 12
154-
//supportedPIDs_41_60
155160
#define VIEW_AMBIENT_TEMP 13
156161
#define VIEW_OIL_TEMP 14
157162
#define VIEW_ABS_LOAD 15
@@ -164,12 +169,13 @@
164169
#define TYPE_DATE 4
165170

166171
#define NO_IMAGE -1
167-
172+
/*
168173
#define STATE_UNKNOWN -1
169174
#define STATE_LOW 0
170175
#define STATE_NORMAL 1
171176
#define STATE_HIGH 2
172177
#define STATE_OUT_OF_RANGE 3
178+
*/
173179

174180
#define DATE_LENGTH 9
175181
#define TIME_LENGTH 6

include/display.h

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#ifndef DISPLAYS_h
2+
#define DISPLAYS_h
3+
4+
#include <Arduino.h>
5+
#include "Adafruit_GFX.h"
6+
#include "Adafruit_GC9A01A.h"
7+
#include "defines.h"
8+
#include "gauge.h"
9+
10+
class Gauge;
11+
12+
class Display {
13+
private:
14+
int id;
15+
bool gaugeHasChanged;
16+
17+
Adafruit_GC9A01A* tft;
18+
19+
int screenWidth;
20+
int screenWidthCenter;
21+
int screenHeight;
22+
int screenHeightCenter;
23+
24+
int totalGauges;
25+
26+
int activeViewIndex;
27+
int secondaryActiveView;
28+
int count;
29+
30+
Gauge *myGauges[MAX_VIEWS + 1];
31+
32+
public:
33+
34+
Display(Adafruit_GC9A01A* monitor, int id, int screenWidth, int screenHeight);
35+
36+
void setGaugeHasChanged(bool gaugeHasChanged);
37+
void updateDisplay();
38+
int getId();
39+
int getTotalGauges();
40+
41+
bool addGauge(int id, int type, int interval, char *title, char *strFormat, int lowColor, int highColor, bool useLowWarning, bool useHighWarning, int min, int low, int high, int max);
42+
bool addSecondaryView(int primaryView, int secondaryViewId, char *strFormat);
43+
Gauge* getGauge(int gaugeId);
44+
45+
int getScreenWidth();
46+
int getScreenHeight();
47+
void printMsg(const char *buf);
48+
49+
int getActiveDisplayId();
50+
int getActiveView();
51+
int getActiveViewId();
52+
Gauge* getActiveGauge();
53+
int getSecondaryActiveView();
54+
55+
void setActiveView(int newActiveView);
56+
void setSecondaryActiveView(int newSecondaryActiveView);
57+
58+
Adafruit_GC9A01A* getTFT();
59+
60+
void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
61+
void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
62+
void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
63+
void setTextColor(uint16_t c);
64+
void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
65+
void getTextBounds(const char *string, int16_t x, int16_t y, int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h);
66+
void setCursor(int16_t x, int16_t y);
67+
void fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color);
68+
void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color);
69+
void print(const char *str);
70+
void setFont(const GFXfont *f);
71+
void fillScreen(uint16_t color);
72+
};
73+
74+
#endif

include/displayManager.h

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#ifndef DISPLAY_MANAGER_h
2+
#define DISPLAY_MANAGER_h
3+
4+
#include <Arduino.h>
5+
#include "Adafruit_GFX.h"
6+
#include "Adafruit_GC9A01A.h"
7+
#include "defines.h"
8+
#include "display.h"
9+
10+
class DisplayManager {
11+
private:
12+
13+
Display *myDisplays[MAX_DISPLAYS + 1];
14+
15+
int activeDisplay;
16+
int count;
17+
18+
public:
19+
DisplayManager();
20+
21+
bool addDisplay(Adafruit_GC9A01A* monitor, int displayID, int screenWidth, int screenHeight);
22+
Display *getDisplay(int DisplayID);
23+
24+
int getActiveDisplayId();
25+
void setActiveDisplay(int activeDisplay);
26+
27+
void goToPreviousDisplay();
28+
void goToNextDisplay();
29+
30+
void goToPreviousView();
31+
void goToNextView();
32+
33+
#ifdef ENABLE_STARTUP_LOGO
34+
void showStartupLogo(int displayID);
35+
#endif
36+
37+
};
38+
39+
#endif

include/displays.h

-38
This file was deleted.

0 commit comments

Comments
 (0)