diff --git a/due_obd2/due_obd2.ino b/due_obd2/due_obd2.ino index d480cd2..1ff291f 100644 --- a/due_obd2/due_obd2.ino +++ b/due_obd2/due_obd2.ino @@ -26,6 +26,7 @@ Program to create a car monitor display using: #define S(x) MS(x) * 1000 #define INIT_TEXT_WIDTH 15 +#define INIT_PERCENTAGE_WIDTH 4 #define FLAG_INIT_UPDATE_TEXT_POS 0x01 #define FLAG_INIT_CLEAR_POS 0x02 #define FLAG_INIT_UPDATE_PERCENT_POS 0x03 @@ -97,13 +98,13 @@ void on_init_run() init_flag &= ~(1 << FLAG_INIT_CLEAR_POS); display.setColor(VGA_BLACK); /*clear only initializing text*/ - display.print(" ",(display.getDisplayXSize() / 2) - (INIT_TEXT_WIDTH * display.getFontXsize() / 2),display.getDisplayYSize() / 2 + 50); + display.print(" ",(display.getDisplayXSize() / 2) - (INIT_TEXT_WIDTH * display.getFontXsize() / 2) - (INIT_PERCENTAGE_WIDTH/2),display.getDisplayYSize() / 2 + 50); } if (init_flag & (1 << FLAG_INIT_UPDATE_TEXT_POS)) { init_flag &= ~(1 << FLAG_INIT_UPDATE_TEXT_POS); display.setColor(VGA_AQUA); - int x_position = (display.getDisplayXSize() / 2 - (INIT_TEXT_WIDTH * display.getFontXsize() / 2)) + (init_text_i * display.getFontXsize()); + int x_position = (display.getDisplayXSize() / 2 - (INIT_TEXT_WIDTH * display.getFontXsize() / 2)) + (init_text_i * display.getFontXsize()) - (INIT_PERCENTAGE_WIDTH/2); Serial.println(x_position); text_temp[0] = init_text[init_text_i]; display.print(text_temp, x_position, display.getDisplayYSize() / 2 + 50); // print as string with one character @@ -111,16 +112,16 @@ void on_init_run() if (init_flag & (1 << FLAG_INIT_UPDATE_PERCENT_POS)) { init_flag &= ~(1 << FLAG_INIT_UPDATE_PERCENT_POS); - int percent_x_pos = (display.getDisplayXSize() / 2 - (INIT_TEXT_WIDTH * display.getFontXsize() / 2)) + (INIT_TEXT_WIDTH * display.getFontXsize()); + int percent_x_pos = (display.getDisplayXSize() / 2 - (INIT_TEXT_WIDTH * display.getFontXsize() / 2)) + (INIT_TEXT_WIDTH * display.getFontXsize()) - (INIT_PERCENTAGE_WIDTH/2); display.setColor(VGA_BLACK); /*clear text region for percent*/ display.print(" ", percent_x_pos, display.getDisplayYSize() / 2 + 50); display.setColor(VGA_FUCHSIA); - char *percent_text = (char *)malloc(3 * sizeof(char)); + char *percent_text = (char *)malloc((INIT_PERCENTAGE_WIDTH-1) * sizeof(char)); sprintf(percent_text, "%d", init_percent); display.print(percent_text, percent_x_pos, display.getDisplayYSize() / 2 + 50); - display.print("%", percent_x_pos + 3 * display.getFontXsize(), display.getDisplayYSize() / 2 + 50); + display.print("%", percent_x_pos + (INIT_PERCENTAGE_WIDTH-1) * display.getFontXsize(), display.getDisplayYSize() / 2 + 50); free(percent_text); } }