Fix battery voltage readouts
This commit is contained in:
@@ -20,7 +20,8 @@ void initBatteryADC() {
|
||||
float readBatteryVoltage() {
|
||||
// 8 quick reads, no delay() calls, no analogReference() change
|
||||
int32_t raw=0; for (int i=0; i<8; i++) raw += analogRead(PIN_VBAT_READ); raw /= 8;
|
||||
return (raw / 4096.0f) * 3.0f * 2.0f;
|
||||
// Seeed XIAO nRF52840 Sense: 1MΩ + 510kΩ voltage divider on VBAT → multiply by 1510/510
|
||||
return (raw / 4096.0f) * 3.0f * (1510.0f / 510.0f);
|
||||
}
|
||||
|
||||
int batteryPercent(float v) {
|
||||
|
||||
@@ -231,7 +231,7 @@ void setup() {
|
||||
blehid.begin();
|
||||
|
||||
#ifdef FEATURE_BATTERY_MONITOR
|
||||
blebas.begin(); blebas.write(100);
|
||||
blebas.begin(); blebas.write(batteryPercent(readBatteryVoltage()));
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_CONFIG_SERVICE
|
||||
|
||||
@@ -125,8 +125,12 @@ async function discoverServices() {
|
||||
// Telemetry notify (1 Hz) — also carries chargeStatus
|
||||
chars.telemetry.addEventListener('characteristicvaluechanged', e => parseTelemetry(e.target.value));
|
||||
await chars.telemetry.startNotifications();
|
||||
// Initial read so values show immediately
|
||||
// Initial read so values show immediately. Also force updateChargeUI() here
|
||||
// because parseTelemetry() only calls it on a *change*, and currentChargeStatus
|
||||
// starts at 0 (discharging) — so a discharging device would never trigger the
|
||||
// update and ciStatus would stay at '--'.
|
||||
parseTelemetry(await chars.telemetry.readValue());
|
||||
updateChargeUI();
|
||||
|
||||
// IMU stream — subscribed on demand via play button
|
||||
chars.imuStream.addEventListener('characteristicvaluechanged', e => parseImuStream(e.target.value));
|
||||
|
||||
Reference in New Issue
Block a user