ESP32: Аналоговые входы
У платы ESP32 15 аналоговых входов с АЦП (12 бит): 2, 4, 12–15, 25–27, 32–36 и 39. Позволяет представить аналоговое напряжение в цифровом виде с разрядностью 12 бит.
Для получения показаний достаточно вызвать функцию analogRead(GPIO), указав нужный пин.
При этом мы считываем уровень напряжения от 0В до 3.3В, которые распределяются от 0 до 4095.
Для примера подключим потенциометр к пину 34 и будем считывать показания через монитор порта.
// Соединим потенциометр к пину GPIO 34 (Analog ADC1_CH6) const int potPin = 34; // показания int potValue = 0; void setup() { Serial.begin(115200); delay(1000); } void loop() { // считываем показания potValue = analogRead(potPin); Serial.println(potValue); delay(500); }
Следует учитывать, что показания не являются строго линейными. Так напряжение от 3.2 до 3.3 всё равно будет выводить значение 4095, аналогично для напряжения от 0 до 0.1, которое будет равно 0.
При использовании WiFi для аналоговых входов используйте пины 32, 33, 34, 35, 36, 39. Остальные могут вызвать проблемы.
Другие функции
Существует свои нестандартные функции для работы с аналоговыми входами.
- analogReadResolution(resolution) — устанавливает разрешение. Можно использовать значение 9 (0 – 511) или 12 (0 – 4095). По умолчанию используется 12 бит
- analogSetWidth(width) — аналогичная функция. Можно использовать значение 9 (0 – 511) или 12 (0 – 4095). По умолчанию используется 12 бит
- analogSetCycles(cycles) — set the number of cycles per sample. Default is 8. Range: 1 to 255
- analogSetSamples(samples) — set the number of samples in the range. Default is 1 sample. It has an effect of increasing sensitivity
- analogSetClockDiv(attenuation) — set the divider for the ADC clock. Default is 1. Range: 1 to 255
- analogSetAttenuation(attenuation) — sets the input attenuation for all ADC pins. Default is ADC_11db. Accepted values:
ADC_0db: sets no attenuation (1V input = ADC reading of 1088).
ADC_2_5db: sets an attenuation of 1.34 (1V input = ADC reading of 2086).
ADC_6db: sets an attenuation of 1.5 (1V input = ADC reading of 2975).
ADC_11db: sets an attenuation of 3.6 (1V input = ADC reading of 3959). - analogSetPinAttenuation(pin, attenuation) — sets the input attenuation for the specified pin. The default is ADC_11db. Attenuation values are the same from previous function.
- adcAttachPin(pin) — Attach a pin to ADC (also clears any other analog mode that could be on). Returns TRUE or FALSE result.
- adcStart(pin), adcBusy(pin), resultadcEnd(pin) — starts an ADC convertion on attached pin’s bus. Check if conversion on the pin’s ADC bus is currently running (returns TRUE or FALSE). Get the result of the conversion: returns 16-bit integer.
Sorry, the comment form is closed at this time.