diff --git a/README.md b/README.md index e6e0a8d..b504516 100644 --- a/README.md +++ b/README.md @@ -12,4 +12,9 @@ V1.0 ``` +``` +电池放电曲线: + https://blog.csdn.net/daoshuti/article/details/76163942 +``` + diff --git a/app/src/acid_dispenser_ble_slave_main.c b/app/src/acid_dispenser_ble_slave_main.c index 26837aa..f2ef80f 100644 --- a/app/src/acid_dispenser_ble_slave_main.c +++ b/app/src/acid_dispenser_ble_slave_main.c @@ -79,8 +79,8 @@ void one_conduction_process_rx_packet(uint8_t* rx, int len) { ZLOGI("update state mode:%d state:%d", workmode, pumpworkstate); zapp_get_gstate()->last_usr_operation_time = znordic_getpower_on_ms(); - zapp_get_gstate()->hand_acid_mode = workmode; - zapp_get_gstate()->work_state = pumpworkstate; + zapp_get_gstate()->hand_acid_mode = workmode; + zapp_get_gstate()->work_state = pumpworkstate; send_success_receipt(rxheader, NULL, 0); return; @@ -264,8 +264,9 @@ void pre_process_state(app_event_t* event, uint16_t event_size) { if (battery_mgr_get_battery_level() < 30) { light_ctrl_trigger_once_low_power(); } - // ZLOGI("battery level:%d",battery_mgr_get_battery_level()); } + // ZLOGI("battery level:%d", (int)(battery_mgr_get_battery_level())); + cnt++; } } diff --git a/app/src/app_service/battery_mgr_service.c b/app/src/app_service/battery_mgr_service.c index 8a5d38b..92d012b 100644 --- a/app/src/app_service/battery_mgr_service.c +++ b/app/src/app_service/battery_mgr_service.c @@ -1,9 +1,9 @@ #include "battery_mgr_service.h" -#include "board/board.h" #include "app_basic_service/zapp_core.h" -#define BATTERY_ADC_CHANNEL 1 // 不重复即可 -#define BATTERY_ADC_PIN NRF_SAADC_INPUT_AIN3 +#include "board/board.h" +#define BATTERY_ADC_CHANNEL 1 // 不重复即可 +#define BATTERY_ADC_PIN NRF_SAADC_INPUT_AIN3 void battery_mgr_init() { // BATADC @@ -15,8 +15,7 @@ void battery_mgr_init() { channel_config.acq_time = NRF_SAADC_ACQTIME_40US; ZERROR_CHECK(nrfx_saadc_channel_init(BATTERY_ADC_CHANNEL, &channel_config)); } -int16_t battery_mgr_get_battery_level() { - +int battery_mgr_get_battery_level() { nrf_saadc_value_t value; ret_code_t err_code; err_code = nrfx_saadc_sample_convert(BATTERY_ADC_CHANNEL, &value); @@ -24,5 +23,10 @@ int16_t battery_mgr_get_battery_level() { ZLOGE("nrfx_saadc_sample_convert(%d) fail err_code:%d", BATTERY_ADC_CHANNEL, err_code); return 0; } - return value; + float voltage = value / 4096.0 * 3.6 + 0.3; // 0.3为防反接二极管压降 + + float percent = (voltage - 1.8) / (3.2 - 1.8) * 100; + if (percent > 100) percent = 100; + if (percent < 0) percent = 2; + return percent; } diff --git a/app/src/app_service/battery_mgr_service.h b/app/src/app_service/battery_mgr_service.h index 8154f7c..b3ef58a 100644 --- a/app/src/app_service/battery_mgr_service.h +++ b/app/src/app_service/battery_mgr_service.h @@ -7,5 +7,5 @@ #include "znordic.h" void battery_mgr_init(); -int16_t battery_mgr_get_battery_level(); +int battery_mgr_get_battery_level();