|
@ -57,26 +57,35 @@ static int16_t battery_level_filter(int16_t nowlevel) { |
|
|
} else if (nowlevel <= 5) { |
|
|
} else if (nowlevel <= 5) { |
|
|
lastlevel = nowlevel; |
|
|
lastlevel = nowlevel; |
|
|
} |
|
|
} |
|
|
return lastlevel; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int16_t retlevel = lastlevel; |
|
|
|
|
|
retlevel = retlevel / 5 * 5; |
|
|
|
|
|
return retlevel; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
int16_t BoardBattery_get_battery_level() { |
|
|
int16_t BoardBattery_get_battery_level() { |
|
|
static const float maxv = 4.15; |
|
|
static const float maxv = 4.15; |
|
|
static const float minv = 3.5; |
|
|
|
|
|
|
|
|
static const float minv = 3.6; |
|
|
|
|
|
|
|
|
int16_t rawval = BoardBattery_get_adc_val(); |
|
|
int16_t rawval = BoardBattery_get_adc_val(); |
|
|
|
|
|
|
|
|
float voltage = rawval / 4096.0 * 3.6 / 2.0 * 3; |
|
|
float voltage = rawval / 4096.0 * 3.6 / 2.0 * 3; |
|
|
if (voltage > maxv) voltage = maxv; |
|
|
|
|
|
if (voltage < minv) voltage = minv; |
|
|
|
|
|
|
|
|
// if (voltage > maxv) voltage = maxv; |
|
|
|
|
|
// if (voltage < minv) voltage = minv; |
|
|
|
|
|
|
|
|
float percent = (voltage - minv) / (maxv - minv) * 100 + (float)0.1 /*加0.1是为了避免999.999时显示电量为90*/; |
|
|
float percent = (voltage - minv) / (maxv - minv) * 100 + (float)0.1 /*加0.1是为了避免999.999时显示电量为90*/; |
|
|
int16_t percent_int = (int16_t)percent; |
|
|
int16_t percent_int = (int16_t)percent; |
|
|
|
|
|
|
|
|
|
|
|
if (battery_get_chargeing_state()) { |
|
|
|
|
|
percent_int = percent_int - 10; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if (percent_int < 0) { |
|
|
if (percent_int < 0) { |
|
|
percent_int = 0; |
|
|
percent_int = 0; |
|
|
} else if (percent_int > 100) { |
|
|
} else if (percent_int > 100) { |
|
|
percent_int = 100; |
|
|
percent_int = 100; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return battery_level_filter(percent_int); |
|
|
return battery_level_filter(percent_int); |
|
|
// return percent_int; |
|
|
// return percent_int; |
|
|
} |
|
|
} |