前提條件
已知最大值和最小值,通過圖表來表示范圍萄凤。圖表的范圍是不固定的
效果
1室抽,
static int16_t test[] = {800, 800, 840, 750, 750, 800, 810, 1900, 810,1300, 878, 876, 900, 9999, -9999, 220, 200, 200, 200, 900, 878, 876, 900,980};
1.jpg
2,
static int16_t test[] = {800, 800, 840, 750, 800, 800, 800, 840, 810,1000, 1000, 1000, 900, 840, 840, 750, 750, 750, 750, 750, 878, 876, 900,980};
2.jpg
關(guān)鍵計(jì)算
1靡努,這種效果不太好
// 獲取動(dòng)態(tài)類型的圖表范圍最大值和最小值
void dynamic_chart_get_range(int16_t in_min, int16_t in_max, int16_t *out_min, int16_t *out_max)
{
if (in_min == 0)
{
in_min = 1;
}
if (in_max == 0)
{
in_max = 1;
}
int avg_value = (LV_ABS(in_max) + LV_ABS(in_min))/2;
int t = LV_ABS(in_max/in_min); // 倍數(shù)
*out_max = in_max + (t*avg_value);
*out_min = in_min - (t*avg_value);
}
推薦這種
// 獲取動(dòng)態(tài)類型的圖表范圍最大值和最小值
void dynamic_chart_get_range(int16_t in_min, int16_t in_max, int16_t *out_min, int16_t *out_max)
{
if (in_min == 0)
{
in_min = 1;
}
if (in_max == 0)
{
in_max = 1;
}
int avg_value = (LV_ABS(in_max) + LV_ABS(in_min))/2;
*out_max = in_max + avg_value;
*out_min = in_min - avg_value;
}