ESP32AnalogRead
ESP32AnalogRead.cpp
Go to the documentation of this file.
1 /*
2  * ESP32AnalogRead.cpp
3  *
4  * Created on: Apr 10, 2020
5  * Author: hephaestus
6  * https://github.com/madhephaestus/ESPMutexDemo/blob/DSPTest/ESPMutexDemo.ino
7  */
8 
9 #include "ESP32AnalogRead.h"
10 
12  if (!(pinNum < 0)) {
13  attach(pinNum);
14  }
15 }
16 void ESP32AnalogRead::attach(int pin) {
17  myPin = pin;
18  channel = (adc_channel_t) digitalPinToAnalogChannel(myPin);
19  attached = true;
20 }
21 
23  float mv = readMiliVolts();
24 
25  return mv * 0.001;
26 }
55  if (!attached)
56  return 0;
57  analogRead(myPin);
58  // Configure ADC
59 
60  if (myPin > 27) {
61  adc1_config_width(ADC_WIDTH_12Bit);
62  adc1_channel_t chan= ADC1_CHANNEL_0;
63  switch (myPin) {
64 
65  case 36:
66  chan = ADC1_CHANNEL_0;
67  break;
68  case 37:
69  chan = ADC1_CHANNEL_1;
70  break;
71  case 38:
72  chan = ADC1_CHANNEL_2;
73  break;
74  case 39:
75  chan = ADC1_CHANNEL_3;
76  break;
77  case 32:
78  chan = ADC1_CHANNEL_4;
79  break;
80  case 33:
81  chan = ADC1_CHANNEL_5;
82  break;
83  case 34:
84  chan = ADC1_CHANNEL_6;
85  break;
86  case 35:
87  chan = ADC1_CHANNEL_7;
88  break;
89  }
90  adc1_config_channel_atten(chan, ADC_ATTEN_11db);
91  } else {
92  adc2_channel_t chan= ADC2_CHANNEL_0;
93  switch (myPin) {
94  case 4:
95  chan = ADC2_CHANNEL_0;
96  break;
97  case 0:
98  chan = ADC2_CHANNEL_1;
99  break;
100  case 2:
101  chan = ADC2_CHANNEL_2;
102  break;
103  case 15:
104  chan = ADC2_CHANNEL_3;
105  break;
106  case 13:
107  chan = ADC2_CHANNEL_4;
108  break;
109  case 12:
110  chan = ADC2_CHANNEL_5;
111  break;
112  case 14:
113  chan = ADC2_CHANNEL_6;
114  break;
115  case 27:
116  chan = ADC2_CHANNEL_7;
117  break;
118  case 25:
119  chan = ADC2_CHANNEL_8;
120  break;
121  case 26:
122  chan = ADC2_CHANNEL_9;
123  break;
124  }
125  adc2_config_channel_atten(chan, ADC_ATTEN_11db);
126  }
127 
128  // Calculate ADC characteristics i.e. gain and offset factors
129  esp_adc_cal_get_characteristics(V_REF, ADC_ATTEN_DB_11, ADC_WIDTH_BIT_12,
130  &characteristics);
131  uint32_t voltage = 0;
132  // Read ADC and obtain result in mV
133  esp_adc_cal_get_voltage(channel, &characteristics, &voltage);
134  return voltage - 50;
135 }
#define V_REF
esp_adc_cal_characteristics_t characteristics
adc_channel_t channel
void attach(int pin)
ESP32AnalogRead(int pin=-1)
uint32_t readMiliVolts()