mirror of
https://github.com/SemvdH/OBD2-car-display.git
synced 2025-12-16 04:31:04 +00:00
Add device labels
This commit is contained in:
@@ -31,6 +31,8 @@ Program to create a car monitor display using:
|
|||||||
#define FLAG_INIT_UPDATE_TEXT_POS 0x01
|
#define FLAG_INIT_UPDATE_TEXT_POS 0x01
|
||||||
#define FLAG_INIT_CLEAR_POS 0x02
|
#define FLAG_INIT_CLEAR_POS 0x02
|
||||||
#define FLAG_INIT_UPDATE_PERCENT_POS 0x03
|
#define FLAG_INIT_UPDATE_PERCENT_POS 0x03
|
||||||
|
#define FLAG_DEVICE_LABEL_UPDATE_POS 0x04
|
||||||
|
#define FLAG_DEVICE_LABEL_SHOULD_UPDATE_POS 0x05
|
||||||
|
|
||||||
#define LOGO_MIN_STEP 20
|
#define LOGO_MIN_STEP 20
|
||||||
#define LOGO_MAX_POS_Y 124
|
#define LOGO_MAX_POS_Y 124
|
||||||
@@ -38,25 +40,50 @@ Program to create a car monitor display using:
|
|||||||
|
|
||||||
#define LOGO_TEXT_WIDTH 16
|
#define LOGO_TEXT_WIDTH 16
|
||||||
|
|
||||||
|
#define RAM_AMOUNT_KB 96
|
||||||
|
#define DEV_CPU_RAM_TEXT_LENGTH 3
|
||||||
|
#define DEV_DISPLAY_TEXT_LENGTH 7
|
||||||
|
|
||||||
|
enum DeviceLabel
|
||||||
|
{
|
||||||
|
DEV_CPU = 0,
|
||||||
|
DEV_RAM = 1,
|
||||||
|
DEV_DISPLAY = 2,
|
||||||
|
DEV_DONE = 3
|
||||||
|
};
|
||||||
|
|
||||||
|
/* extern fonts */
|
||||||
extern uint8_t BigFont[];
|
extern uint8_t BigFont[];
|
||||||
extern uint8_t SmallFont[];
|
extern uint8_t SmallFont[];
|
||||||
extern uint8_t OCR_A_Extended_M[];
|
extern uint8_t OCR_A_Extended_M[];
|
||||||
|
|
||||||
|
/* display strings */
|
||||||
|
char init_text[] PROGMEM = "Initialising...";
|
||||||
|
char device_labels[3][10] PROGMEM = {"CPU ", "RAM ", "DISPLAY"};
|
||||||
|
char cpu_text[] PROGMEM = "ATSAM3X8E";
|
||||||
|
char display_size_text[] PROGMEM = "480x320";
|
||||||
|
|
||||||
|
/* initialising... variables */
|
||||||
char should_clear = 1;
|
char should_clear = 1;
|
||||||
char led_state = LOW;
|
char led_state = LOW;
|
||||||
char init_flag = 0;
|
char init_flag = 0;
|
||||||
char init_text_i = -1;
|
char init_text_i = -1;
|
||||||
int init_text_x = 100;
|
int init_text_x = 100;
|
||||||
char init_text[] PROGMEM = "Initialising...";
|
|
||||||
char text_temp[2] = {'a', '\0'};
|
char text_temp[2] = {'a', '\0'};
|
||||||
int init_percent = 0;
|
int init_percent = 0;
|
||||||
|
|
||||||
|
/* logo variables */
|
||||||
char logo_text[] PROGMEM = "DS3 OBD2 display";
|
char logo_text[] PROGMEM = "DS3 OBD2 display";
|
||||||
int logo_pos_y = 0;
|
int logo_pos_y = 0;
|
||||||
int last_logo_pos_y = 0;
|
int last_logo_pos_y = 0;
|
||||||
int logo_pos_i = 0;
|
int logo_pos_i = 0;
|
||||||
char logo_flag = 0;
|
char logo_flag = 0;
|
||||||
|
|
||||||
|
/* device info variables */
|
||||||
|
char init_device_info = 0; /* wether we are drawing CPU (0), RAM (1) or DISPLAY (2) */
|
||||||
|
char ram_kb_amount = 0; /* counts up to 96 to show the KB of ram */
|
||||||
|
char device_label_i = -1; /* counter in the current device label */
|
||||||
|
|
||||||
void on_init_enter();
|
void on_init_enter();
|
||||||
void on_init_run();
|
void on_init_run();
|
||||||
void on_init_exit();
|
void on_init_exit();
|
||||||
@@ -97,6 +124,9 @@ void on_init_enter()
|
|||||||
Timer0.attachInterrupt(update_init_text);
|
Timer0.attachInterrupt(update_init_text);
|
||||||
Timer0.start(MS(200));
|
Timer0.start(MS(200));
|
||||||
|
|
||||||
|
Timer2.attachInterrupt(update_device_info);
|
||||||
|
Timer2.start(MS(100));
|
||||||
|
|
||||||
// TODO change to update when initializing bluetooth..
|
// TODO change to update when initializing bluetooth..
|
||||||
Timer1.attachInterrupt(update_percent_test);
|
Timer1.attachInterrupt(update_percent_test);
|
||||||
Timer1.start(MS(60));
|
Timer1.start(MS(60));
|
||||||
@@ -140,6 +170,15 @@ void on_init_run()
|
|||||||
free(percent_text);
|
free(percent_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (init_flag & (1 << FLAG_DEVICE_LABEL_UPDATE_POS))
|
||||||
|
{
|
||||||
|
init_flag &= ~(1 << FLAG_DEVICE_LABEL_UPDATE_POS);
|
||||||
|
text_temp[0] = device_labels[init_device_info][device_label_i];
|
||||||
|
display.setColor(VGA_AQUA);
|
||||||
|
int x_position = 10 + (device_label_i * display.getFontXsize());
|
||||||
|
display.print(text_temp, x_position, 10 + (init_device_info * display.getFontYsize() + 3));
|
||||||
|
}
|
||||||
|
|
||||||
logo_pos_i += 3;
|
logo_pos_i += 3;
|
||||||
last_logo_pos_y = logo_pos_y;
|
last_logo_pos_y = logo_pos_y;
|
||||||
logo_pos_y = logo_step(logo_pos_i);
|
logo_pos_y = logo_step(logo_pos_i);
|
||||||
@@ -157,7 +196,6 @@ void on_init_run()
|
|||||||
display.setColor(VGA_AQUA);
|
display.setColor(VGA_AQUA);
|
||||||
display.print(logo_text, CENTER, logo_pos_y);
|
display.print(logo_text, CENTER, logo_pos_y);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,7 +203,10 @@ void on_init_exit()
|
|||||||
{
|
{
|
||||||
Serial.println("Exiting init state!");
|
Serial.println("Exiting init state!");
|
||||||
display.clrScr();
|
display.clrScr();
|
||||||
|
Timer0.detachInterrupt();
|
||||||
Timer0.stop();
|
Timer0.stop();
|
||||||
|
Timer2.detachInterrupt();
|
||||||
|
Timer2.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************/
|
/****************************/
|
||||||
@@ -204,6 +245,40 @@ void update_percent_test()
|
|||||||
init_flag |= (1 << FLAG_INIT_UPDATE_PERCENT_POS);
|
init_flag |= (1 << FLAG_INIT_UPDATE_PERCENT_POS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void update_device_info()
|
||||||
|
{
|
||||||
|
switch (init_device_info)
|
||||||
|
{
|
||||||
|
case DEV_CPU:
|
||||||
|
device_label_i++;
|
||||||
|
if (device_label_i > DEV_CPU_RAM_TEXT_LENGTH)
|
||||||
|
{
|
||||||
|
init_device_info++;
|
||||||
|
device_label_i = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DEV_RAM:
|
||||||
|
device_label_i++;
|
||||||
|
if (device_label_i > DEV_CPU_RAM_TEXT_LENGTH)
|
||||||
|
{
|
||||||
|
init_device_info++;
|
||||||
|
device_label_i = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DEV_DISPLAY:
|
||||||
|
device_label_i++;
|
||||||
|
if (device_label_i > DEV_DISPLAY_TEXT_LENGTH)
|
||||||
|
{
|
||||||
|
|
||||||
|
device_label_i = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
init_flag |= (1 << FLAG_DEVICE_LABEL_UPDATE_POS);
|
||||||
|
}
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user