|
@@ -15,7 +15,107 @@ const static char *TAG = "Decection";
|
|
|
|
|
|
static int adc_raw[2][10];
|
|
|
static int voltage[2][10];
|
|
|
-
|
|
|
+// 0度的电池电量映射
|
|
|
+batt_map batt_map_0Du[] = {
|
|
|
+ //
|
|
|
+ {2225, 100},
|
|
|
+ {2162, 99},
|
|
|
+ {2156, 98},
|
|
|
+ {2151, 97},
|
|
|
+ {2146, 95},
|
|
|
+ {2142, 94},
|
|
|
+ {2137, 93},
|
|
|
+ {2131, 92},
|
|
|
+ {2125, 91},
|
|
|
+ //
|
|
|
+ {2120, 90},
|
|
|
+ {2113, 89},
|
|
|
+ {2107, 87},
|
|
|
+ {2101, 86},
|
|
|
+ {2094, 85},
|
|
|
+ {2088, 84},
|
|
|
+ {2081, 83},
|
|
|
+ {2075, 82},
|
|
|
+ //
|
|
|
+ {2068, 80},
|
|
|
+ {2061, 79},
|
|
|
+ {2054, 78},
|
|
|
+ {2047, 77},
|
|
|
+ {2040, 76},
|
|
|
+ {2033, 75},
|
|
|
+ {2027, 74},
|
|
|
+ {2020, 72},
|
|
|
+ {2013, 71},
|
|
|
+ //
|
|
|
+ {2006, 70},
|
|
|
+ {2000, 69},
|
|
|
+ {1993, 68},
|
|
|
+ {1987, 67},
|
|
|
+ {1981, 66},
|
|
|
+ {1974, 64},
|
|
|
+ {1967, 63},
|
|
|
+ {1961, 62},
|
|
|
+ {1955, 61},
|
|
|
+ //
|
|
|
+ {1949, 60},
|
|
|
+ {1943, 59},
|
|
|
+ {1937, 58},
|
|
|
+ {1931, 56},
|
|
|
+ {1926, 55},
|
|
|
+ {1920, 54},
|
|
|
+ {1915, 53},
|
|
|
+ {1910, 52},
|
|
|
+ {1906, 51},
|
|
|
+ //
|
|
|
+ {1902, 50},
|
|
|
+ {1899, 48},
|
|
|
+ {1894, 47},
|
|
|
+ {1891, 46},
|
|
|
+ {1887, 45},
|
|
|
+ {1884, 44},
|
|
|
+ {1880, 43},
|
|
|
+ {1878, 41},
|
|
|
+ //
|
|
|
+ {1875, 40},
|
|
|
+ {1872, 39},
|
|
|
+ {1869, 38},
|
|
|
+ {1867, 37},
|
|
|
+ {1864, 36},
|
|
|
+ {1861, 35},
|
|
|
+ {1859, 33},
|
|
|
+ {1857, 32},
|
|
|
+ {1854, 31},
|
|
|
+ //
|
|
|
+ {1852, 30},
|
|
|
+ {1850, 29},
|
|
|
+ {1849, 28},
|
|
|
+ {1847, 27},
|
|
|
+ {1845, 25},
|
|
|
+ {1843, 24},
|
|
|
+ {1841, 23},
|
|
|
+ {1838, 22},
|
|
|
+ {1835, 21},
|
|
|
+ //
|
|
|
+ {1832, 20},
|
|
|
+ {1828, 19},
|
|
|
+ {1823, 17},
|
|
|
+ {1818, 16},
|
|
|
+ {1813, 15},
|
|
|
+ {1807, 14},
|
|
|
+ {1801, 13},
|
|
|
+ {1794, 12},
|
|
|
+ //
|
|
|
+ {1789, 10},
|
|
|
+ {1783, 9},
|
|
|
+ {1778, 8},
|
|
|
+ {1771, 7},
|
|
|
+ {1762, 6},
|
|
|
+ {1756, 5},
|
|
|
+ {1691, 4},
|
|
|
+ {1634, 2},
|
|
|
+ {1541, 1},
|
|
|
+ {1400, 0},
|
|
|
+};
|
|
|
#define USER_KEY_CHANNEL ADC_CHANNEL_7
|
|
|
|
|
|
#define USER_ADC_CHANNEL ADC_CHANNEL_2
|
|
@@ -32,6 +132,19 @@ adc_cali_handle_t adc2_cali_handle = NULL;
|
|
|
// adc_calibration_deinit(adc2_cali_handle);
|
|
|
// }
|
|
|
// }
|
|
|
+static int get_batt_pre(int vol)
|
|
|
+{
|
|
|
+ for (int i = 0; i <= 100; i++)
|
|
|
+ {
|
|
|
+ if (vol >= batt_map_0Du[i].vol)
|
|
|
+ {
|
|
|
+ ESP_LOGI(TAG, "vol = %d ,pre = %d", vol, batt_map_0Du[i].pre);
|
|
|
+ return batt_map_0Du[i].pre;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ESP_LOGE(TAG, "ERR : get_batt_pre vol = %d",vol);
|
|
|
+ return 0;
|
|
|
+}
|
|
|
int adc_read_power_pin(adc_oneshot_unit_handle_t adc_handle)
|
|
|
{
|
|
|
bool do_calibration;
|
|
@@ -56,29 +169,8 @@ int adc_read_power_pin(adc_oneshot_unit_handle_t adc_handle)
|
|
|
ESP_LOGD(TAG, "ADC%d Channel[%d] Cali Voltage: %d mV", USER_ADC_UNIT + 1, USER_ADC_CHANNEL, voltage[0][0]);
|
|
|
adc_calibration_deinit(adc2_cali_handle);
|
|
|
}
|
|
|
- int batt_percent;
|
|
|
-
|
|
|
- // 电量范围映射
|
|
|
- float result_voltage = (float)(voltage[0][0]) / 1000.0 /*4095.0 * 3.3*/; // 假设ADC参考电压为3.3V
|
|
|
- float battery_percentage = ((result_voltage - 1.8) / (2.2 - 1.8)) * 100.0;
|
|
|
- // 限制电量范围在0%到100%之间
|
|
|
- if (battery_percentage <= 0)
|
|
|
- {
|
|
|
- battery_percentage = 0;
|
|
|
- }
|
|
|
- else if (battery_percentage >= 100)
|
|
|
- {
|
|
|
- battery_percentage = 100;
|
|
|
- }
|
|
|
-
|
|
|
- batt_percent = (int)battery_percentage;
|
|
|
-
|
|
|
-#if 0
|
|
|
- ESP_LOGI(TAG,"batt_percent = [%d],voltage[0][0] = [%d]",batt_percent, voltage[0][0]);
|
|
|
-#else
|
|
|
- printf("voltage[0][0] = [%d],adc value %d\r\n",voltage[0][0],(int)battery_percentage);
|
|
|
-#endif
|
|
|
- return batt_percent;
|
|
|
+
|
|
|
+ return get_batt_pre(voltage[0][0]);
|
|
|
}
|
|
|
|
|
|
int adc_read_left_key_pin(adc_oneshot_unit_handle_t adc_handle)
|