← Back to ratslair.com
aboutsummaryrefslogtreecommitdiff
path: root/EZADC.c
diff options
context:
space:
mode:
authorEdvin <[email protected]>2025-10-13 15:41:15 +0200
committerEdvin <[email protected]>2025-10-13 15:41:15 +0200
commit751419d47e2173c7d366e817a8321d9e49dd41c5 (patch)
tree979ef87b1ab2f3a513282038e496e2428178465a /EZADC.c
First commit
Diffstat (limited to 'EZADC.c')
-rw-r--r--EZADC.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/EZADC.c b/EZADC.c
new file mode 100644
index 0000000..371faf6
--- /dev/null
+++ b/EZADC.c
@@ -0,0 +1,46 @@
+#include "EZADC.h"
+
+void init_adc(ADC* adc)
+{
+ // Only use unit 1, as unit 2 is going to be deprecated.
+ // And it does not work while using the Wi-Fi module.
+ adc->adc_init_config.unit_id = ADC_UNIT_1;
+
+ ESP_ERROR_CHECK(adc_oneshot_new_unit(&(adc->adc_init_config), &(adc->adc_handle)));
+}
+
+void config_adc(ADC* adc, int config_channel)
+{
+ adc->adc_config.atten = ADC_ATTEN_DB_12;
+ adc->adc_config.bitwidth = ADC_BITWIDTH_DEFAULT;
+
+ adc->channel = ezadc_channel[config_channel];
+
+ ESP_ERROR_CHECK(adc_oneshot_config_channel(adc->adc_handle, adc->channel, &(adc->adc_config)));
+
+ adc->adc_cali_handle = NULL;
+ adc->cali_config.unit_id = ADC_UNIT_1;
+ adc->cali_config.atten = ADC_ATTEN_DB_12;
+ adc->cali_config.bitwidth = ADC_BITWIDTH_DEFAULT;
+
+ ESP_ERROR_CHECK(adc_cali_create_scheme_line_fitting(&(adc->cali_config), &(adc->adc_cali_handle)));
+}
+
+void teardown_adc(ADC* adc)
+{
+ ESP_ERROR_CHECK(adc_oneshot_del_unit(adc->adc_handle));
+ ESP_ERROR_CHECK(adc_cali_delete_scheme_line_fitting(adc->adc_cali_handle));
+}
+
+int ez_read(ADC* adc)//, int adc_raw[2][10], int voltage[2][10])
+{
+ char* TAG = "ez_read";
+
+ ESP_ERROR_CHECK(adc_oneshot_read(adc->adc_handle, adc->channel, &adc_raw[0][0]));
+ ESP_LOGI(TAG, "ADC%d Channel[%d] Raw data: %d", adc->adc_init_config.unit_id + 1, adc->channel, adc_raw[0][0]);
+
+ ESP_ERROR_CHECK(adc_cali_raw_to_voltage(adc->adc_cali_handle, adc_raw[0][0], &voltage[0][0]));
+ ESP_LOGI(TAG, "ADC%d Channel[%d] Voltage: %d", adc->adc_init_config.unit_id + 1, adc->channel, voltage[0][0]);
+
+ return voltage[0][0];
+}