1. 花了几天时间基于lvgl8.3封装了lvgl_cpp,写了一些基本需要的控件,支持链式调用
还存在一点点bug,不难fix 2. 增加了中文字库,支持中文显示 3. 修复和优化了一些地方
This commit is contained in:
@@ -114,4 +114,47 @@ float BAT_Get_Volts(void)
|
||||
// printf("BAT voltage : %.2f V\r\n", BAT_analogVolts);
|
||||
}
|
||||
return BAT_analogVolts;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 滞回锁定百分比(±1 % 死区)
|
||||
* @param pct:实时算出的 0-100
|
||||
* @retval 对外发布的稳定百分比
|
||||
*/
|
||||
int32_t BAT_Percent_Lock(int32_t pct)
|
||||
{
|
||||
static int32_t out = 0; // 上次对外值
|
||||
if (pct >= out + 1) out = pct; // 上升门槛
|
||||
if (pct <= out - 1) out = pct; // 下降门槛
|
||||
return out;
|
||||
}
|
||||
|
||||
static float lpf = 0.0f; // 上一次滤波结果
|
||||
static bool first = true; // 首次赋值标志
|
||||
float BAT_Get_Volts_Filtered(void)
|
||||
{
|
||||
float raw = BAT_Get_Volts(); // 你的原始函数
|
||||
|
||||
if (first) { lpf = raw; first = false; } // 第一次直接赋值
|
||||
lpf = lpf + 0.05f * (raw - lpf); // α=0.05 越小刚越稳
|
||||
return lpf;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief 返回电池剩余电量百分比(0~100)
|
||||
* @note 基于 200 k + 100 k 分压,ADC 满量程 1.1 V
|
||||
* @retval 0 已放空(≤ 3.0 V)
|
||||
* 100 满电(≥ 4.2 V) 这里给到4.1V 以放置电池达不到100%的电量
|
||||
* 中间线性
|
||||
*/
|
||||
int32_t BAT_Get_Percent(void)
|
||||
{
|
||||
const float volts = BAT_Get_Volts_Filtered(); // 3.0 ~ 4.2 V -> 0 ~ 100 做映射
|
||||
// 限幅
|
||||
if (volts <= 3.0f) return 0;
|
||||
if (volts >= 4.1f) return 100;
|
||||
// 滞回比较器 + 线性映射
|
||||
return BAT_Percent_Lock((int32_t)((volts - 3.0f) / (4.2f - 3.0f) * 100.0f + 0.5f)); // +0.5 四舍五入
|
||||
}
|
||||
@@ -24,6 +24,8 @@ extern float BAT_analogVolts;
|
||||
void BAT_Init(void);
|
||||
float BAT_Get_Volts(void);
|
||||
|
||||
int32_t BAT_Get_Percent(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user