summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanley Huang <stanleyhuangyc@gmail.com>2014-06-05 10:49:06 +1000
committerStanley Huang <stanleyhuangyc@gmail.com>2014-06-05 10:49:06 +1000
commitbd2cd01267ff9a6a37a68ee3f46da29582e86579 (patch)
treec7776067bd98c3979edcf88cb1204685137eb42f
parent381fc9caf327bd6297a0db274ba2a62ece5141ac (diff)
download2021-arduino-obd-bd2cd01267ff9a6a37a68ee3f46da29582e86579.tar.gz
2021-arduino-obd-bd2cd01267ff9a6a37a68ee3f46da29582e86579.tar.bz2
2021-arduino-obd-bd2cd01267ff9a6a37a68ee3f46da29582e86579.zip
Update Mega Logger
-rw-r--r--megalogger/config.h15
-rw-r--r--megalogger/megalogger.ino92
2 files changed, 49 insertions, 58 deletions
diff --git a/megalogger/config.h b/megalogger/config.h
index 151165a..45e1398 100644
--- a/megalogger/config.h
+++ b/megalogger/config.h
@@ -1,11 +1,6 @@
#ifndef CONFIG_H_INCLUDED
#define CONFIG_H_INCLUDED
-// definitions
-#define OBD_MODEL_UART 0
-#define OBD_MODEL_I2C 1
-
-// configurations
/**************************************
* Choose model of OBD-II Adapter
**************************************/
@@ -44,13 +39,15 @@
* Data logging/streaming options
**************************************/
#define ENABLE_DATA_OUT 0
-#define ENABLE_DATA_LOG 1
+#define ENABLE_DATA_LOG 0
#define LOG_FORMAT FORMAT_CSV /* options: FORMAT_CSV, FORMAT_BIN */
/**************************************
-* LCD module
+* LCD module (uncomment only one)
**************************************/
-LCD_ILI9325D lcd; /* for ILI9325 based TFT shield */
-//LCD_ILI9341 lcd; /* for ILI9341 based SPI TFT */
+//LCD_SSD1289 lcd; /* 3.2" SSD12389 based TFT LCD */
+LCD_ILI9325D lcd; /* 2.8" ILI9325 based TFT LCD */
+//LCD_ILI9341 lcd; /* 2.4" ILI9341 based SPI TFT LCD */
+//LCD_Null lcd;
#endif
diff --git a/megalogger/megalogger.ino b/megalogger/megalogger.ino
index 8ba8186..4962c12 100644
--- a/megalogger/megalogger.ino
+++ b/megalogger/megalogger.ino
@@ -32,10 +32,10 @@
#ifdef USE_GPS
// GPS logging can only be enabled when there is additional hardware serial UART
-#if defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__) || defined(__SAM3X8E__)
-#define GPSUART Serial2
-#elif defined(__AVR_ATmega644P__)
+#if defined(__AVR_ATmega644P__)
#define GPSUART Serial1
+#else
+#define GPSUART Serial2
#endif
#ifdef GPSUART
@@ -51,10 +51,6 @@ TinyGPS gps;
#endif // GPSUART
#endif
-#if !defined(__AVR_ATmega2560__) && !defined(__AVR_ATmega1280__) && !defined(__AVR_ATmega644P__) && !defined(__SAM3X8E__)
-#define MEMORY_SAVING
-#endif
-
static uint8_t lastFileSize = 0;
static uint32_t lastGPSDataTime = 0;
static uint32_t lastACCDataTime = 0;
@@ -128,10 +124,8 @@ public:
lcd.printInt(index);
#endif
-#if 0
showECUCap();
delay(1000);
-#endif
read(PID_DISTANCE, (int&)startDistance);
@@ -164,7 +158,7 @@ public:
char buf[10];
unsigned int sec = (dataTime - startTime) / 1000;
sprintf(buf, "%02u:%02u", sec / 60, sec % 60);
- lcd.setFont(FONT_SIZE_MEDIUM);
+ lcd.setFontSize(FONT_SIZE_MEDIUM);
lcd.setCursor(250, 2);
lcd.print(buf);
lcd.setCursor(250, 11);
@@ -197,7 +191,7 @@ public:
pinMode(SS, OUTPUT);
lcd.setCursor(0, 4);
- lcd.setFont(FONT_SIZE_MEDIUM);
+ lcd.setFontSize(FONT_SIZE_MEDIUM);
if (card.init(SPI_FULL_SPEED, SD_CS_PIN)) {
const char* type;
char buf[20];
@@ -268,7 +262,7 @@ private:
char buf[10];
unsigned int t = (millis() - startTime) / 1000;
sprintf(buf, "%02u:%02u", t / 60, t % 60);
- lcd.setFont(FONT_SIZE_SMALL);
+ lcd.setFontSize(FONT_SIZE_SMALL);
lcd.setCursor(0, 28);
lcd.print(buf);
#ifdef GPSUART
@@ -332,7 +326,7 @@ private:
logData(PID_GPS_ALTITUDE, (float)gps.altitude());
}
- lcd.setFont(FONT_SIZE_MEDIUM);
+ lcd.setFontSize(FONT_SIZE_MEDIUM);
char buf[16];
sprintf(buf, "%d.%ld", (int)(lat / 100000), abs(lat) % 100000);
lcd.setCursor(50, 18);
@@ -366,7 +360,7 @@ private:
accel_t_gyro_union data;
MPU6050_readout(&data);
- lcd.setFont(FONT_SIZE_SMALL);
+ lcd.setFontSize(FONT_SIZE_SMALL);
sprintf(buf, "%3d", data.value.x_accel / 160);
lcd.setCursor(197, 21);
@@ -419,10 +413,10 @@ private:
if ((dataSize >> 10) != lastFileSize) {
flushFile();
// display logged data size
- lcd.setFont(FONT_SIZE_MEDIUM);
+ lcd.setFontSize(FONT_SIZE_MEDIUM);
lcd.setCursor(250, 8);
lcd.printInt((unsigned int)(dataSize >> 10));
- lcd.setFont(FONT_SIZE_SMALL);
+ lcd.setFontSize(FONT_SIZE_SMALL);
lcd.print(" KB");
lastFileSize = dataSize >> 10;
}
@@ -440,15 +434,15 @@ private:
byte pidlist[] = {PID_RPM, PID_SPEED, PID_THROTTLE, PID_ENGINE_LOAD, PID_MAF_FLOW, PID_INTAKE_MAP, PID_FUEL_LEVEL, PID_FUEL_PRESSURE, PID_COOLANT_TEMP, PID_INTAKE_TEMP, PID_AMBIENT_TEMP, PID_TIMING_ADVANCE, PID_BAROMETRIC};
const char* namelist[] = {"ENGINE RPM", "SPEED", "THROTTLE", "ENGINE LOAD", "MAF", "MAP", "FUEL LEVEL", "FUEL PRESSURE", "COOLANT TEMP", "INTAKE TEMP","AMBIENT TEMP", "IGNITION TIMING", "BAROMETER"};
- lcd.setFont(FONT_SIZE_MEDIUM);
+ lcd.setFontSize(FONT_SIZE_MEDIUM);
for (byte i = 0; i < sizeof(pidlist) / sizeof(pidlist[0]); i++) {
lcd.setCursor(160, i * 2 + 4);
lcd.print(namelist[i]);
lcd.write(' ');
bool valid = isValidPID(pidlist[i]);
- lcd.setTextColor(valid ? RGB16_GREEN : RGB16_RED);
+ lcd.setColor(valid ? RGB16_GREEN : RGB16_RED);
lcd.draw(valid ? tick : cross, 16, 16);
- lcd.setTextColor(RGB16_WHITE);
+ lcd.setColor(RGB16_WHITE);
}
}
void reconnect()
@@ -457,7 +451,7 @@ private:
closeFile();
#endif
lcd.clear();
- lcd.setFont(FONT_SIZE_MEDIUM);
+ lcd.setFontSize(FONT_SIZE_MEDIUM);
lcd.print("Reconnecting...");
state &= ~(STATE_OBD_READY | STATE_ACC_READY | STATE_DATE_SAVED);
//digitalWrite(SD_CS_PIN, LOW);
@@ -480,63 +474,63 @@ private:
// screen layout related stuff
void showStates()
{
- lcd.setFont(FONT_SIZE_MEDIUM);
+ lcd.setFontSize(FONT_SIZE_MEDIUM);
lcd.setCursor(0, 8);
lcd.print("OBD ");
- lcd.setTextColor((state & STATE_OBD_READY) ? RGB16_GREEN : RGB16_RED);
+ lcd.setColor((state & STATE_OBD_READY) ? RGB16_GREEN : RGB16_RED);
lcd.draw((state & STATE_OBD_READY) ? tick : cross, 16, 16);
- lcd.setTextColor(RGB16_WHITE);
+ lcd.setColor(RGB16_WHITE);
lcd.setCursor(0, 10);
lcd.print("ACC ");
- lcd.setTextColor((state & STATE_ACC_READY) ? RGB16_GREEN : RGB16_RED);
+ lcd.setColor((state & STATE_ACC_READY) ? RGB16_GREEN : RGB16_RED);
lcd.draw((state & STATE_ACC_READY) ? tick : cross, 16, 16);
- lcd.setTextColor(RGB16_WHITE);
+ lcd.setColor(RGB16_WHITE);
lcd.setCursor(0, 12);
lcd.print("GPS ");
if (state & STATE_GPS_READY) {
- lcd.setTextColor(RGB16_GREEN);
+ lcd.setColor(RGB16_GREEN);
lcd.draw(tick, 16, 16);
} else if (state & STATE_GPS_CONNECTED)
lcd.print("--");
else {
- lcd.setTextColor(RGB16_RED);
+ lcd.setColor(RGB16_RED);
lcd.draw(cross, 16, 16);
}
- lcd.setTextColor(RGB16_WHITE);
+ lcd.setColor(RGB16_WHITE);
}
void showSensorData(byte pid, int value)
{
char buf[8];
switch (pid) {
case PID_RPM:
- lcd.setFont(FONT_SIZE_XLARGE);
+ lcd.setFontSize(FONT_SIZE_XLARGE);
lcd.setCursor(34, 7);
lcd.printInt((unsigned int)value % 10000, 4);
break;
case PID_SPEED:
if (lastSpeed != value) {
- lcd.setFont(FONT_SIZE_XLARGE);
+ lcd.setFontSize(FONT_SIZE_XLARGE);
lcd.setCursor(50, 2);
lcd.printInt((unsigned int)value % 1000, 3);
lastSpeed = value;
}
break;
case PID_THROTTLE:
- lcd.setFont(FONT_SIZE_SMALL);
+ lcd.setFontSize(FONT_SIZE_SMALL);
lcd.setCursor(39, 12);
lcd.printInt(value % 100, 3);
break;
case PID_INTAKE_TEMP:
- lcd.setFont(FONT_SIZE_SMALL);
+ lcd.setFontSize(FONT_SIZE_SMALL);
lcd.setCursor(102, 12);
lcd.printInt(value % 1000, 3);
break;
case PID_DISTANCE:
if ((unsigned int)value >= startDistance) {
- lcd.setFont(FONT_SIZE_MEDIUM);
+ lcd.setFontSize(FONT_SIZE_MEDIUM);
lcd.setCursor(250, 5);
lcd.printInt(((unsigned int)value - startDistance) % 1000);
lcd.print("km");
@@ -547,18 +541,16 @@ private:
void initScreen()
{
lcd.clear();
-#ifndef MEMORY_SAVING
- lcd.draw2x(frame0[0], 78, 58);
+ lcd.draw4bpp(frame0[0], 78, 58);
lcd.setXY(164, 0);
- lcd.draw2x(frame0[0], 78, 58);
+ lcd.draw4bpp(frame0[0], 78, 58);
lcd.setXY(0, 124);
- lcd.draw2x(frame0[0], 78, 58);
+ lcd.draw4bpp(frame0[0], 78, 58);
lcd.setXY(164, 124);
- lcd.draw2x(frame0[0], 78, 58);
-#endif
+ lcd.draw4bpp(frame0[0], 78, 58);
//lcd.setColor(RGB16(0x7f, 0x7f, 0x7f));
- lcd.setFont(FONT_SIZE_SMALL);
+ lcd.setFontSize(FONT_SIZE_SMALL);
lcd.setCursor(110, 4);
lcd.print("km/h");
lcd.setCursor(110, 8);
@@ -587,12 +579,12 @@ private:
lcd.setCursor(20, 27);
lcd.print("SAT:");
- lcd.setFont(FONT_SIZE_MEDIUM);
+ lcd.setFontSize(FONT_SIZE_MEDIUM);
lcd.setCursor(185, 18);
lcd.print("Accelerometer");
lcd.setCursor(200, 23);
lcd.print("Gyroscope");
- lcd.setFont(FONT_SIZE_SMALL);
+ lcd.setFontSize(FONT_SIZE_SMALL);
lcd.setCursor(185, 21);
lcd.print("X: Y: Z:");
lcd.setCursor(185, 26);
@@ -626,13 +618,8 @@ void btSend(byte* data, byte length)
void setup()
{
- lcd.begin();
- lcd.setFont(FONT_SIZE_MEDIUM);
- lcd.backlight(true);
- lcd.setTextColor(0xFFE0);
- lcd.print("MEGA LOGGER - OBD-II/GPS/G-FORCE");
- lcd.setTextColor(RGB16_WHITE);
-
+ Serial.begin(115200);
+ Serial.println("MegaLogger");
#ifdef GPSUART
#ifdef GPS_OPEN_BAUDRATE
GPSUART.begin(GPS_OPEN_BAUDRATE);
@@ -649,6 +636,13 @@ void setup()
logger.begin();
logger.initSender();
+ lcd.begin();
+ lcd.setFontSize(FONT_SIZE_MEDIUM);
+ lcd.backlight(true);
+ lcd.setColor(0xFFE0);
+ lcd.print("MEGA LOGGER - OBD-II/GPS/G-FORCE");
+ lcd.setColor(RGB16_WHITE);
+
logger.checkSD();
logger.setup();
}