Подключение потенциометра к Arduino
1. Введение
В робототехнике регулировка различных параметров, таких как громкость звука, мощность, напряжение и т.д., осуществляется при помощи переменных резисторов с регулируемым уровнем сопротивления. Примером такого устройства является потенциометр ардуино, который при включении в электрическую схему может быть использован для регулировки параметров. В этой статье мы рассмотрим варианты подключения и примеры скетчей для работы с потенциометром.
2. Принцип работы потенциометра

Переменный резистор или потенциометр – это электрическое устройство, значение уровня сопротивления которого можно задать в определенных пределах. Таким образом мы можем менять параметры электрических схем, гибко подстраивая их под определенные условия: например, регулировать чувствительность датчика или громкость звука в динамике. Потенциометры получили широкое распространение в схемах регулировки громкости, напряжения, контрастности и т.д., за свою простоту и практичность.
В зависимости от своего строения потенциометры делятся на два больших класса: цифровые и аналоговые. Основным элементом цифрового потенциометра является резистивная лестница, где на каждом шаге схемы имеются электронные переключатели. В конкретный момент времени происходит закрытие только одного электронного выключателя, что задает определенную величину сопротивления. За счет количества шагов в лестнице определяется диапазон разрешения потенциометра. Аналоговый потенциометр может изменять свое значение непрерывно, но, как правило, в более узком диапазоне и сам резистор будет иметь большие габариты.
В подавляющем большинстве случаев в проектах ардуино используются цифровые потенциометры. Чаще всего они являются интегральными схемами с положением цифрового указателя по центру шкалы.
3. Подключение потенциометра к платам Ардуино
Схема подключения

Для этого три вывода потенциометра необходимо соединить с указанными выводами платы:
Черный – GND;
Красный – питание 5В;
Средний – от центрального вывода к аналоговому входу А0.
Изменяя положение вала подключенного потенциометра, происходит изменение параметра сопротивления, которое вызывает изменение показателя на нулевом пине платы ардуино. Считывание полученного значения напряжения аналогового импульса происходит в скетче с помощью команды analogRead()
.
В плату Ардуино встроен аналого-цифровой преобразователь, способный считывать напряжение и переводить его в цифровые показатели со значением от нуля до 1023. При повороте указателя до конечного значения в одном из двух возможных направлений, напряжение на пине равно нулю, и, следовательно, напряжение, которое будет генерироваться составляет 0 В. При повороте вала до конца в противоположном направлении на пин поступает напряжение величиной 5В, а значит числовое значение будет составлять 1023.
4. Пример проекта
Примером реализации схемы подключения потенциометра может стать макетная плата с подключенным переменным резистором и светодиодом. При помощи потенциометра будет выполняться управление уровнем яркости свечения.

Для проведения работ следует подготовить такие детали:
1 плату Arduino Uno
1 беспаячную макетную плату
1 светодиод
1 резистор с сопротивлением 220 Ом
6 проводов «папа-папа»
1 потенциометр.
Для использования меньшего количества проводов от макетной платы к контроллеру следует подключить светодиод и потенциометр проводом земли к длинному рельсу минуса.
5. Пример скетча
В этом примере важно понимать, что яркость свечения светодиода управляется не напряжением подаваемым с потенциометра, а кодом.
#define PIN_LED 11
#define PIN_POT A0
void setup()
{
// Пин, к которому подсоединяется светодиод определяем как выход
pinMode(PIN_LED, OUTPUT);
// Пин с переменным резистором является входом
pinMode(PIN_POT, INPUT);
}
void loop(){
// Определяем 2 переменные типа int
int rotat, brightn;
// Считывание в переменную rotat напряжения с переменного резистора:
// микроконтроллер будет выдавать числа от 0 до 1023
// пропорциональны положению поворота вала
rotat = analogRead(PIN_POT);
// Преобразуем значение в яркость. Для этого делим rotat на 4, что с учетом округления даст нам число от 0 до 255. Именно это число мы подадим на шим-выход, с помощью которого можно управлять яркостью.
brightn = rotat / 4;
// Запись шим значения яркости на светодиод
analogWrite(PIN_LED, brightn);
}