static void create_bar_tab(lv_obj_t * parent)
{
lv_obj_t * title = lv_label_create(parent);
lv_label_set_text(title, "Bar: Accel X/Y/Z");
lv_obj_align(title, LV_ALIGN_TOP_MID, 0, 5);
bar_chart = lv_chart_create(parent);
lv_obj_set_size(bar_chart, 390, 280);
lv_obj_align(bar_chart, LV_ALIGN_CENTER, 0, 0);
lv_chart_set_type(bar_chart, LV_CHART_TYPE_BAR);
lv_chart_set_point_count(bar_chart, 3);
lv_chart_set_range(bar_chart, LV_CHART_AXIS_PRIMARY_Y, 0, 100);
bar_ser = lv_chart_add_series(bar_chart,
lv_palette_main(LV_PALETTE_GREEN),
LV_CHART_AXIS_PRIMARY_Y);
lv_obj_set_style_pad_column(bar_chart, 50, 0);
/* Labels */
const char *names[] = {"X", "Y", "Z"};
lv_color_t colors[] = {
lv_palette_main(LV_PALETTE_RED),
lv_palette_main(LV_PALETTE_GREEN),
lv_palette_main(LV_PALETTE_BLUE)
};
for(int i = 0; i < 3; i++) {
bar_labels[i] = lv_label_create(parent);
lv_label_set_text_fmt(bar_labels[i], "%s: 0.00", names[i]);
lv_obj_set_style_text_color(bar_labels[i], colors[i], 0);
lv_obj_align(bar_labels[i], LV_ALIGN_BOTTOM_LEFT, 30 + i * 120, -5);
}
}
static void create_area_tab(lv_obj_t * parent)
{
lv_obj_t * title = lv_label_create(parent);
lv_label_set_text(title, "Area: Magnitude");
lv_obj_align(title, LV_ALIGN_TOP_MID, 0, 5);
area_chart = lv_chart_create(parent);
lv_obj_set_size(area_chart, 390, 285);
lv_obj_align(area_chart, LV_ALIGN_CENTER, 0, 0);
lv_chart_set_type(area_chart, LV_CHART_TYPE_LINE);
lv_chart_set_point_count(area_chart, CHART_POINTS);
lv_chart_set_range(area_chart, LV_CHART_AXIS_PRIMARY_Y, 0, 150);
area_ser = lv_chart_add_series(area_chart,
lv_palette_main(LV_PALETTE_RED),
LV_CHART_AXIS_PRIMARY_Y);
/* Enable area fill */
lv_obj_set_style_bg_opa(area_chart, LV_OPA_50, LV_PART_ITEMS);
lv_obj_set_style_size(area_chart, 4, 4, LV_PART_INDICATOR);
lv_obj_set_style_line_width(area_chart, 3, LV_PART_ITEMS);
lv_chart_set_div_line_count(area_chart, 5, 8);
area_label = lv_label_create(parent);
lv_label_set_text(area_label, "Magnitude: 0.00 m/s²");
lv_obj_set_style_text_color(area_label,
lv_palette_main(LV_PALETTE_RED), 0);
lv_obj_align(area_label, LV_ALIGN_BOTTOM_MID, 0, -5);
}
static void create_scatter_tab(lv_obj_t * parent)
{
lv_obj_t * title = lv_label_create(parent);
lv_label_set_text(title, "Scatter: X vs Y");
lv_obj_align(title, LV_ALIGN_TOP_MID, 0, 5);
scatter_chart = lv_chart_create(parent);
lv_obj_set_size(scatter_chart, 290, 280);
lv_obj_align(scatter_chart, LV_ALIGN_CENTER, 0, 0);
lv_chart_set_type(scatter_chart, LV_CHART_TYPE_SCATTER);
lv_chart_set_point_count(scatter_chart, SCATTER_POINTS);
/* MUST set BOTH X and Y ranges for scatter */
lv_chart_set_range(scatter_chart, LV_CHART_AXIS_PRIMARY_X, 0, 200);
lv_chart_set_range(scatter_chart, LV_CHART_AXIS_PRIMARY_Y, 0, 200);
scatter_ser = lv_chart_add_series(scatter_chart,
lv_palette_main(LV_PALETTE_BLUE),
LV_CHART_AXIS_PRIMARY_Y);
lv_obj_set_style_size(scatter_chart, 10, 10, LV_PART_INDICATOR);
lv_obj_set_style_bg_opa(scatter_chart, LV_OPA_70, LV_PART_INDICATOR);
lv_chart_set_div_line_count(scatter_chart, 5, 5);
scatter_label = lv_label_create(parent);
lv_label_set_text(scatter_label, "X: 0.00 Y: 0.00");
lv_obj_align(scatter_label, LV_ALIGN_BOTTOM_MID, 0, -5);
}
static void create_line_tab(lv_obj_t * parent)
{
lv_obj_t * title = lv_label_create(parent);
lv_label_set_text(title, "Line: Gyro R/P/Y");
lv_obj_align(title, LV_ALIGN_TOP_MID, 0, 5);
line_chart = lv_chart_create(parent);
lv_obj_set_size(line_chart, 390, 275);
lv_obj_align(line_chart, LV_ALIGN_CENTER, 0, -5);
lv_chart_set_type(line_chart, LV_CHART_TYPE_LINE);
lv_chart_set_point_count(line_chart, CHART_POINTS);
lv_chart_set_range(line_chart, LV_CHART_AXIS_PRIMARY_Y, 0, 100);
lv_obj_set_style_size(line_chart, 0, 0, LV_PART_INDICATOR);
lv_obj_set_style_line_width(line_chart, 3, LV_PART_ITEMS);
lv_chart_set_div_line_count(line_chart, 5, 5);
lv_color_t colors[] = {
lv_palette_main(LV_PALETTE_RED),
lv_palette_main(LV_PALETTE_GREEN),
lv_palette_main(LV_PALETTE_BLUE)
};
const char *names[] = {"Roll", "Pitch", "Yaw"};
for(int i = 0; i < 3; i++) {
line_ser[i] = lv_chart_add_series(line_chart, colors[i],
LV_CHART_AXIS_PRIMARY_Y);
line_labels[i] = lv_label_create(parent);
lv_label_set_text_fmt(line_labels[i], "%s: 0.00", names[i]);
lv_obj_set_style_text_color(line_labels[i], colors[i], 0);
lv_obj_align(line_labels[i], LV_ALIGN_BOTTOM_LEFT, 20 + i * 125, -5);
}
}