Аналоговые входы и потенциометры
Научитесь считывать аналоговые сигналы с потенциометра и управлять параметрами в реальном времени.
Подготовка оборудования
ESP32 DevKit
Любая версия (30/38 пинов)
Потенциометр
10 кОм KY-016 (модуль)
Светодиод
5мм Красный/Зелёный
Резистор
220 Ом (защита LED)
Как работает потенциометр
Устройство потенциометра
Потенциометр — это переменный резистор с тремя выводами. При вращении ручки подвижный контакт (wiper) перемещается по резистивной дорожке, изменяя сопротивление.
Pin 1
3.3V (VCC)
Pin 2
Сигнал (OUT)
Pin 3
GND
Аналого-цифровой преобразователь
ESP32 ADC
ESP32 имеет 12-битный ADC, который преобразует аналоговое напряжение (0-3.3В) в цифровое значение от 0 до 4095.
Формула преобразования:
Voltage = (ADC_value / 4095) × 3.3
// Пример: ADC = 2048
Voltage = (2048 / 4095) × 3.3 ≈ 1.65В
! Важные нюансы ESP32
✅ Пиные ADC1 (рекомендуются)
GPIO 32, 33 — INPUT/OUTPUT
Эти пины не конфликтуют с WiFi
⚠️ Пиные ADC2 (избегать)
Конфликт с WiFi/Bluetooth
Не работают при включенном WiFi
Схема подключения
VCC Подключите 3.3V к левому пину потенциометра
GND Подключите GND к правому пину потенциометра
OUT Средний пин к GPIO 34 (ADC1_CH6)
LED GPIO 33 → резистор 220Ω → анод светодиода
Принцип работы ADC
Аналоговый сигнал
Непрерывное напряжение от 0В до 3.3В в зависимости от положения ручки.
12-битное значение
ESP32 преобразует напряжение в число от 0 до 4095 (2^12 = 4096 уровней).
Линейная зависимость
Прямая пропорциональность: половина напряжения = половина значения ADC.
| Напряжение | ADC Значение | Проценты | PWM (0-255) |
|---|---|---|---|
| 0.0В | 0 | 0% | 0 |
| 0.825В | 1024 | 25% | 64 |
| 1.65В | 2048 | 50% | 128 |
| 2.475В | 3072 | 75% | 192 |
| 3.3В | 4095 | 100% | 255 |
Программирование
Настройка Arduino IDE
Откройте Файл → Настройки
Добавьте ссылку на пакет в поле Additional Boards Manager URLs
Установите esp32 через Менеджер плат
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Монитор порта
График зависимости
Код в Arduino IDE
Визуализация работы
Положение ручки
Поворот на 50% = среднее положение потенциометра.
Значение ADC
ESP32 считывает значение 2048 (половина от 4095).
Яркость LED
PWM значение 128 = 50% яркость светодиода.
Интерактивный симулятор потенциометра
Поэкспериментируйте с виртуальным потенциометром: вращайте ручку и наблюдайте, как меняются напряжение и сопротивление в реальном времени.
Возможные проблемы
Значения ADC не меняются при вращении ↓
Проверьте подключение: VCC к 3.3V, GND к земле, OUT к GPIO 34. Убедитесь, что провода надёжно вставлены в макетную плату.
Значения сильно скачут (шум) ↓
Это нормальное явление для ADC. Добавьте усреднение: считайте 10 значений и вычисляйте среднее. Или увеличьте задержку между чтениями.
GPIO 34 не работает как OUTPUT ↓
Пиные 34-39 поддерживают только режим INPUT. Это аппаратное ограничение ESP32. Используйте GPIO 32 или 33 для OUTPUT.
ADC не работает при включенном WiFi ↓
Вы используете пины ADC2 (0, 2, 4, 12-15). Переподключитесь к пинам ADC1: 32, 33, 34, 35, 36, 37, 38, 39.
Значения на краях диапазона нелинейны ↓
Это характеристика ESP32 ADC. На краях (0-100 и 3995-4095) возможна нелинейность. Для точных измерений используйте внешнюю микросхему ADC.
Цех Испытаний
Отточите мастерство работы с аналоговыми сигналами. Каждая задача — шаг к созданию интерактивных устройств.
Вольтметр
Преобразование ADC в напряжение с точностью до сотых
Считывайте значение потенциометра с GPIO 34 каждые 300мс и вычисляйте напряжение по формуле: voltage = (ADC / 4095.0) × 3.3. Выводите в монитор порта строго в формате 'Voltage: 1.65V' (2 знака). Проверка: в крайнем левом положении ручки — ~0.00V, в крайнем правом — ~3.30V.
Диммер для LED
Плавная регулировка яркости через PWM
Потенциометр регулирует яркость светодиода от 0% до 100%. Используйте функцию map() для преобразования диапазона.
Пороговое значение
Реагирование на превышение порога
LED загорается только когда потенциометр выше 50% (значение ADC > 2048). Выводите сообщение о превышении.
Плавное включение
Анимация плавного набора яркости
Если потенциометр поднялся выше 50% (ADC > 2048) — светодиод плавно нарастает от 0 до 255 за ~2.5 секунды (255 шагов по 10мс). Если потенциометр опустился ниже 50% — светодиод плавно гаснет от 255 до 0 за ~2.5 секунды. Результат: никаких скачков яркости — только плавное изменение в обе стороны.
Сигнализация
Комплексная система с кнопкой и сиреной
Подключите кнопку к GPIO 15. Если потенциометр > 80% (ADC > 3276) И кнопка нажата одновременно — LED воспроизводит SOS: 3 коротких вспышки по 200мс (пауза 200мс между ними), затем пауза 400мс, 3 длинных по 600мс, пауза 400мс, 3 коротких по 200мс, пауза 1200мс — и повтор. Если условие не выполнено — LED выключен.
Свой Проект
Создайте уникальное устройство с потенциометром в онлайн-симуляторе. Регулируйте громкость, яркость, скорость...
Поздравляем! 🎉
Вы освоили работу с аналоговыми сигналами и потенциометрами! Теперь вы можете создавать устройства с плавной регулировкой параметров.