Arduino IDE

Для работы с сервомотором будем использовать стандартную библиотеку Servo.h. В этой библиотеке есть несколько полезных нам функций:

  • attach(номер_контакта) — инициализация сервомотора;
  • write(угол) — поворот на заданный угол;
  • read() — получение текущего угла сервомотора.

Пусть самая первая программа сначала повернёт мотор в нулевое положение, потом на угол 90 градусов, потом на 180. И так в цикле.

#include <Servo.h>

Servo myservo;

void setup() {
    myservo.attach(3); // подключение сервомотора на контакт 3
}

void loop() {
    myservo.write(0); // движение в нулевую позицию
    delay(3000);
    myservo.write(90); // движение на угол 90
    delay(3000);
    myservo.write(180); // поворот на угол 180
    delay(3000);
}

Загружаем программу на отладочную плату, отключаем её от USB и подключаем к внешнему источнику.

Ручное управление

Теперь напишем программу, с помощью который мы будем управлять поворотом сервомотора при помощи потенциометра. Подключим его к любому из аналоговых входов: A0..A5.

Алгоритм работы программы сводится к трём действиям:

  • считывание показаний потенциометра в диапазоне от 0 до 1023;
  • преобразование полученного числа в угол от 0 до 180 градусов;
  • передача вычисленного угла на сервопривод.

Исходный код:

#include <Servo.h>

Servo servo;

void setup(){
    servo.attach(2); // сервомотор на контакте 2
    pinMode(A0, INPUT); // потенциометр на контакте A0
}

void loop(){
    servo.write((map(analogRead(A0), 0, 1024, 0, 180)));
    delay(50);
}

Для отображения множества чисел 0 — 1023 в множество 0-180 используем функцию map. Ту же самую операцию, можно было осуществить с помощью выражения:

int angle = (value / 1023.0) * 180;

Загружаем программу на Ардуино Уно, и смотрим что получилось!

servo_sweep_300

Теперь, вы знаете что такое сервопривод, и можете легко им управлять. Вперед! К созданию роботов-манипуляторов и шагающих роботов-пауков!


Изменено:

Управление сервомотором: 2 комментария

  1. Приветствую! А как сделать вместо потенциометра на одной кнопке постоянное вращение на определенный угол туда сюда(80-100),а двумя другими увеличивать амплитуду (60-110) и уменьшать её 85-95?

  2. Як зробити щоб серво привод повертався по годинам. Наприклад . в 2 часа на 90 градусів . в 4 часа на 120 градусів

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарий
Имя
E-mail

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.