В этой статье я покажу, как можно работать с сервоприводами на примере дешевого сервопривода SG90 и потенциометра-слайдера. Идея управлять сервами с помощью потенциометра не новая, но почему-то всегда в примерах задействованы круговые потенциометры, про слайдеры ни кто не рассказывает. Постараюсь исправить это в статье ниже.
Что использовалось в проекте:
- Arduino (я использовал arduino nano, но можно любую другую). Покупал тут: arduino nano
- Сервопривод SG90. Покупал тут: Сервопривод SG90
- Потенциометр-слайдер. Покупал тут: Потенциометр-слайдер
Сервопривод SG90. Подключение к arduino

Сервопривод SG90 имеет три провода. Красный – это плюсовой провод, рабочее напряжение от 3 до 7 вольт, поэтому 5 вольт от ардуино подходит идеально. Коричневый провод – это земля. И последний, желтый – это управляющий провод, который нужно подключать к цифровому пину ардуино, в примере будем использовать пин 9.
Для работы с сервоприводами в IDE ардуино уже есть по умолчанию библиотека Servo.h, которую нужно подключать в начале скетча.
Замечание: сервопривод SG90 имеет возможность поворачиваться только на 180 градусов.
Ниже приведен пример кода, который поворачивает сервопривод на 90 градусов.
#include <Servo.h> // подключение библиотеки
Servo test_servo; // создание объекта для сервы
void setup() {
test_servo.attach(9); // указываем управляющий пин
delay(100);
test_servo.write(90); // делаем поворот на 90 градусов
}
void loop() {}
Потенциометр-слайдер 10КОм. Подключение к arduino

Как уже писал выше, управление сервоприводом будет осуществляться с помощью потенциометра, только потенциометр будет иметь нестандартную форму – слайдер с ползунком. Такой потенциометр стоит дороже обычного кругового, но для некоторых проектов подходит намного удачнее.
Потенциометр имеет две тройки пинов, использовать можно любую из них, отличается они только началом отсчета. Для подключения к ардуино необходимо три провода: VCC – плюс 5 вольт, GND – земля и OTA(или OTB) – это пин с данными, который возвращает значение от 0 до 1023, поэтому подключать к ардуино нужно тоже к аналоговому пину, например A0.
Ниже приведен пример кода, который считывает данные с потенциометра и выводит их.
int val = 0;
void setup() {
Serial.begin(9600);
pinMode( A0, INPUT );
}
void loop() {
val = analogRead(A0);
Serial.println(val);
delay(100);
}
Вращение сервопривода SG90 в зависимости от положения потенциометра
Осталось только подключить сервопривод и потенциометр вместе и связать их. Подключаем все точно так же, как и по отдельности, отличие будет заключаться только в коде скетча. Необходимо получить значение с потенциометра, которое меняется от 0 до 1023, преобразовать его в значение от 0 до 180 градусов и повернуть сервопривод на получившийся угол.
Пример такого кода я приведу ниже:
#include <Servo.h> // подключение библиотеки
Servo test_servo; // создание объекта для сервы
void setup() {
test_servo.attach(9); // указываем управляющий пин
delay(100);
test_servo.write(90); // делаем поворот на 90 градусов
}
void loop() {}
#include <Servo.h> // подключение библиотеки
Servo myservo; // создание объекта для сервы
int potpin = A0; // пин потенциометра
int val; // переменная, в которую запишем значение с потенциометра
void setup() {
myservo.attach(9); // указываем управляющий пин для сервы
}
void loop() {
val = analogRead(potpin); // считываем значение потенциометра
val = map(val, 0, 1023, 0, 180); // переводим значения от 0 до 1023 в нужные 0-180 градусов
myservo.write(val); // делаем поворот сервы
delay(50);
}
Послесловие
Статья оказалась не большая и довольно простая, но на основе этих знаний можно делать довольно интересные штуки, например, сейчас я пытаюсь сделать поворотные светильники, которые будут управляться с пульта. Когда проект будет закончен, и если получится интересно, то напишу об этом.
Ниже приложу коротенькое видео, на котором видно, как работают в связке сервопривод sg90 и потенциометр-слайдер.
