Модули NodeMCU ESP-C3-13 Kit,  ESP-C3-32S Kit и другие платы быстрой разработки с микроконтроллером ESP32-C3 имеют 2 канала АЦП (ADC) с разрешением от 9 до 12 бит.

АЦП - аналогово-цифровой преобразователь, ADC - analog to digital converter.

Вход АЦП может быть подключён к любому GPIO ( General Purpose Input/Output). GPIO — это незафиксированный вход/выход общего назначения.

Перед использованием АЦП можно выбрать его разрешение, для этого служит функция analogReadResolution. По умолчанию, разрешение 12 бит.

Кроме того, Вы можете воспользоваться функциями analogSetAttenuation или analogSetPinAttenuation для выбора верхнего предела измерения напряжения. Доступны 4 предела измерения напряжения, влияющие на точность измерения. Для ESP32-C3 это:

  • 0 mV ~ 750 mV
  • 0 mV ~ 1050 mV
  • 0 mV ~ 1300 mV
  • 0 mV ~ 2500 mV

Так же, может быть полезна функция adcAttachPin. Эта функция используется для подключения вывода к АЦП (она также очистит любой другой аналоговый режим, который может быть включен).

В следующем примере, с помощью функции Serial.print, в монитор последовательного порта выводится значение полученное с помощью функции analogRead и analogReadMilliVolts.

void setup() {
  Serial.begin(115200);       // initialize serial port at 115200 bit/sec
  analogReadResolution(12);   // set the resolution to 12 bits (0-4096)
}

void loop() {
  int analogValue = analogRead(2);                            // read the analog port IO2
  int analogVolts = analogReadMilliVolts(2);                  // millivolts value for IO2
  // print out the values you read:
  Serial.printf("ADC analog value = %d\n",analogValue);
  Serial.printf("ADC millivolts value = %d\n",analogVolts);
  delay(100);                                                 // delay in between reads
}

Лист. 1.

Литература:

https://docs.espressif.com/projects/arduino-esp32/en/latest/api/adc.html