2025-03-03 22:30:53 +08:00
|
|
|
#include <stdio.h>
|
|
|
|
|
#include "FluxPower.h"
|
|
|
|
|
|
2025-03-10 19:01:20 +08:00
|
|
|
#include "FluxWifi.h"
|
2025-03-11 08:52:40 +08:00
|
|
|
#include "FluxSpifs.h"
|
2025-03-10 19:01:20 +08:00
|
|
|
|
2025-03-09 23:26:47 +08:00
|
|
|
static const char *TAG = "POWER_IO";
|
|
|
|
|
|
2025-03-10 18:07:34 +08:00
|
|
|
/*电量变化引起的界面控件参数变化*/
|
2025-03-09 23:26:47 +08:00
|
|
|
extern lv_obj_t * ui_Batinfo_valueVoltage;
|
|
|
|
|
extern lv_obj_t * ui_Batinfo_valueVolume;
|
|
|
|
|
extern lv_obj_t * ui_Batinfo_SpinboxBAT;
|
|
|
|
|
extern lv_obj_t * ui_Batinfo_BarBAT;
|
|
|
|
|
extern lv_obj_t * ui_Home_LabelHeaderBatValue;
|
2025-03-10 10:42:45 +08:00
|
|
|
extern lv_obj_t * ui_Home_SliderHeaderBat;
|
2025-03-09 23:26:47 +08:00
|
|
|
|
|
|
|
|
/*没有返回值的电源管理任务*/
|
2025-03-10 10:42:45 +08:00
|
|
|
static int Bat_Adc_Value = 0;
|
|
|
|
|
static adc_oneshot_unit_handle_t adc1_handle;
|
|
|
|
|
static TaskHandle_t powerTaskHandle;
|
2025-03-09 23:26:47 +08:00
|
|
|
|
2025-03-10 10:42:45 +08:00
|
|
|
/*定义变量存储电池电压值*/
|
|
|
|
|
static float Bat_Voltage_Value = 0;
|
2025-03-09 23:26:47 +08:00
|
|
|
|
|
|
|
|
void powerTask(void)
|
|
|
|
|
{
|
2025-03-11 08:52:40 +08:00
|
|
|
/*初始化存储系统*/
|
|
|
|
|
spifs_init();
|
|
|
|
|
|
|
|
|
|
/*进行WIFI扫描*/
|
|
|
|
|
wifi_scan();
|
|
|
|
|
|
2025-03-09 23:26:47 +08:00
|
|
|
while (1)
|
|
|
|
|
{
|
|
|
|
|
ESP_ERROR_CHECK(adc_oneshot_read(adc1_handle, EXAMPLE_ADC1_CHAN8, &Bat_Adc_Value));
|
2025-03-10 10:42:45 +08:00
|
|
|
/*根据采样值计算电池电压*/
|
|
|
|
|
Bat_Voltage_Value = 2 * (float)Bat_Adc_Value * 1.767 / 4095.0 + 2.3;
|
2025-03-11 15:15:37 +08:00
|
|
|
vTaskDelay(pdMS_TO_TICKS(5000));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (lv_scr_act() == ui_Batinfo)
|
|
|
|
|
{
|
|
|
|
|
/*配置电池信息页显示*/
|
|
|
|
|
lv_bar_set_value(ui_Batinfo_BarBAT,Bat_Adc_Value,LV_ANIM_ON);
|
|
|
|
|
lv_spinbox_set_value(ui_Batinfo_SpinboxBAT,Bat_Adc_Value);
|
|
|
|
|
|
|
|
|
|
lv_label_set_text_fmt(ui_Batinfo_valueVoltage,"%.2fV",Bat_Voltage_Value);
|
|
|
|
|
lv_label_set_text_fmt(ui_Batinfo_valueVolume,"%.0fmAh",Bat_Voltage_Value/4.2*2500);
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-10 10:42:45 +08:00
|
|
|
/*设置Home页的显示电量*/
|
|
|
|
|
lv_slider_set_value(ui_Home_SliderHeaderBat,Bat_Voltage_Value/4.2*100,LV_ANIM_ON);
|
|
|
|
|
lv_label_set_text_fmt(ui_Home_LabelHeaderBatValue,"%.0f%%",Bat_Voltage_Value/4.2*100);
|
2025-03-09 23:26:47 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void powerInit(void)
|
2025-03-03 22:30:53 +08:00
|
|
|
{
|
2025-03-09 23:26:47 +08:00
|
|
|
/*电源接口初始化*/
|
|
|
|
|
//-------------ADC1 Init---------------//
|
|
|
|
|
adc_oneshot_unit_init_cfg_t init_config1 = {
|
|
|
|
|
.unit_id = ADC_UNIT_1,
|
|
|
|
|
};
|
|
|
|
|
ESP_ERROR_CHECK(adc_oneshot_new_unit(&init_config1, &adc1_handle));
|
|
|
|
|
|
|
|
|
|
//-------------ADC1 Config---------------//
|
|
|
|
|
adc_oneshot_chan_cfg_t config = {
|
2025-03-10 10:42:45 +08:00
|
|
|
.bitwidth = ADC_BITWIDTH_12,
|
|
|
|
|
.atten = ADC_ATTEN_DB_6,
|
2025-03-09 23:26:47 +08:00
|
|
|
};
|
|
|
|
|
ESP_ERROR_CHECK(adc_oneshot_config_channel(adc1_handle, EXAMPLE_ADC1_CHAN8, &config));
|
|
|
|
|
|
2025-03-10 10:42:45 +08:00
|
|
|
xTaskCreate(powerTask,"powerTask",4*1024, NULL, 2, &powerTaskHandle);
|
|
|
|
|
|
2025-03-03 22:30:53 +08:00
|
|
|
}
|