RBE1001Lib
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 }
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  adc_unit_t unit;
60  if (myPin > 27) {
61  adc1_config_width(ADC_WIDTH_12Bit);
62  adc1_channel_t chan= ADC1_CHANNEL_0;
63  unit=ADC_UNIT_1;
64  switch (myPin) {
65 
66  case 36:
67  chan = ADC1_CHANNEL_0;
68  break;
69  case 37:
70  chan = ADC1_CHANNEL_1;
71  break;
72  case 38:
73  chan = ADC1_CHANNEL_2;
74  break;
75  case 39:
76  chan = ADC1_CHANNEL_3;
77  break;
78  case 32:
79  chan = ADC1_CHANNEL_4;
80  break;
81  case 33:
82  chan = ADC1_CHANNEL_5;
83  break;
84  case 34:
85  chan = ADC1_CHANNEL_6;
86  break;
87  case 35:
88  chan = ADC1_CHANNEL_7;
89  break;
90  }
91  adc1_config_channel_atten(chan, ADC_ATTEN_11db);
92  } else {
93  adc2_channel_t chan= ADC2_CHANNEL_0;
94  unit=ADC_UNIT_2;
95  switch (myPin) {
96  case 4:
97  chan = ADC2_CHANNEL_0;
98  break;
99  case 0:
100  chan = ADC2_CHANNEL_1;
101  break;
102  case 2:
103  chan = ADC2_CHANNEL_2;
104  break;
105  case 15:
106  chan = ADC2_CHANNEL_3;
107  break;
108  case 13:
109  chan = ADC2_CHANNEL_4;
110  break;
111  case 12:
112  chan = ADC2_CHANNEL_5;
113  break;
114  case 14:
115  chan = ADC2_CHANNEL_6;
116  break;
117  case 27:
118  chan = ADC2_CHANNEL_7;
119  break;
120  case 25:
121  chan = ADC2_CHANNEL_8;
122  break;
123  case 26:
124  chan = ADC2_CHANNEL_9;
125  break;
126  }
127  adc2_config_channel_atten(chan, ADC_ATTEN_11db);
128  }
129  // Calculate ADC characteristics i.e. gain and offset factors
130 #ifdef ESP_IDF_VERSION
131 #if ESP_IDF_VERSION >= ESP_IDF_VERSION_VAL(4, 0, 0)
132  esp_adc_cal_characterize(unit,
133  ADC_ATTEN_DB_11,
134  ADC_WIDTH_BIT_12,
135  V_REF,
136  &characteristics);
137 #endif
138 #else
139  esp_adc_cal_get_characteristics(V_REF, ADC_ATTEN_DB_11, ADC_WIDTH_BIT_12,&characteristics);
140 #endif
141 
142 
143 
144  uint32_t voltage = 0;
145  // Read ADC and obtain result in mV
146  esp_adc_cal_get_voltage(channel, &characteristics, &voltage);
147  return voltage - 50;
148 }
#define V_REF
esp_adc_cal_characteristics_t characteristics
adc_channel_t channel
void attach(int pin)
ESP32AnalogRead(int pin=-1)
uint32_t readMiliVolts()
int pin
Definition: ToneExample.ino:7