Пример использования сервопривода SG90 и потенциометра-слайдера

sg90

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

Что использовалось в проекте:

Сервопривод SG90. Подключение к arduino

Сервопривод SG90

Сервопривод 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 и потенциометр-слайдер.

Рассказать друзьям: