Потенциометр: подключение к ESP32 и Arduino

Переменный резистор

Ручка, положение которой контроллер читает числом. Внутри — делитель напряжения с подвижной средней точкой.

Как работает

Потенциометр — резистивная дорожка с ползунком. Крайние выводы подключают к питанию и земле, средний (SIG) — к аналоговому входу: он выдаёт напряжение от 0 до питания в зависимости от положения ручки.

analogRead() возвращает 0–4095 на ESP32 и 0–1023 на Arduino. Чтобы получить вольты — умножьте на опорное напряжение и разделите на максимум (не забудьте, что 5 / 1023 в целых числах — ноль: пишите 5.0).

Выводы

ВыводНазначение
SIGползунок — к аналоговому входу
VCCкрай дорожки — к питанию
GNDкрай дорожки — к земле

Подключение к ESP32

ПотенциометрESP32
SIGGPIO34
VCC3V3
GNDGND

Схема из примера «Потенциометр: чтение АЦП».

Потенциометр: чтение АЦП

Открыть пример целиком
Код скетча
// D34 — вход только на чтение, у него нет выходного драйвера.
// Для АЦП это скорее плюс: вывод нельзя случайно замкнуть выходом.
const int POT = 34;

void setup() {
  Serial.begin(115200);
}

void loop() {
  int raw = analogRead(POT);              // 0…4095
  float volts = raw * 3.3 / 4095.0;
  Serial.printf("сырое %4d   %.2f В\n", raw, volts);
  delay(200);
}

Подключение к Arduino Uno

ПотенциометрArduino Uno
SIGA0
VCC5V
GNDGND

Схема из примера «Arduino Uno: переменный резистор и монитор порта».

Arduino Uno: переменный резистор и монитор порта

Открыть пример целиком
Код скетча
// Напряжение с переменного резистора — в монитор порта.
//
// analogRead на Uno возвращает 0–1023: десять разрядов. На ESP32 их
// двенадцать и предел 4095 — код, перенесённый оттуда без правки,
// покажет вчетверо меньше и не пожалуется.
//
// Печать в формате «имя:число» подхватывает вкладка «График»: ряд
// строится сам, править ничего не надо.

const int POT = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int raw = analogRead(POT);
  float volts = raw * 5.0 / 1023.0;
  Serial.print("raw:");
  Serial.print(raw);
  Serial.print(" volts:");
  Serial.println(volts, 2);
  delay(100);
}

В железе

На ESP32 края потенциометра — на 3,3 В, не на 5 В: иначе на вход попадёт больше допустимого. АЦП ESP32 нелинеен у краёв: около 0–0,1 В и выше 3,1 В показания «залипают».

Частые ошибки

Другие детали