Arduino. Управление сервоприводом, на примере SG90.

Для подключения сервопривода SG90 к Arduino, нам нужно:

  1. Плата Arduino. x1
    arduino uno
  2. Компьютер(для написания и загрузке кода, а так же мы будем брать с него электричество). x1
  3. Провод для соединения компьютера и платы. x1
    USBwire
  4. Сервопривод. x1
    Servo
  5. Провода. x3-4
    wire
  6. Есть схемы с внешним источником питания, но можно взять питание и с платы.

Схемы подключения:

ArduinoServo1_bbArduinoServo1_схемаArduinoServo1_foto

 

ArduinoServo2_bb ArduinoServo2_схема

 

Для данной схемы рассмотрим стандартный скетч:

Файл -> Примеры ->Servo->Sweep

Как всегда убираем комментарии и ещё я изменил начальную позицию на 1 (int pos = 1;), так как на позиции 0 мой сервопривод начинает противно пищать и явно ему не комфортно:

Данный скетч заставляет двигаться сервопривод SG90 в свои крайние позиции туда-обратно.

И так разберём, что происходит в скетче:

В самом начале мы подключаем библиотеку «Servo.h». Свои стандартные библиотеки Arduino хранит в папке с IDE Arduino\libraries\, свои библиотеки туда докладывать не стоит, для этого есть специальные места в домашней директории. Но взглянуть на уже имеющиеся может быть интересно.

Здесь мы объявляем переменную-объект myservo, типа Servo, который появился после объявления библиотеки Servo.h. И объявляется переменная pos в которой будет содержаться текущая позиция сервопривода.

В блоке setup у нас выполняется команда:

Данная команда назначает 9 ножку на плате Arduino, под дата кабель сервопривода. Это тоже функция библиотеки Servo.h объекта типа Servo.

Переходим к блоку loop:

здесь у нас два цикла for первый будет увеличивать позицию(pos) сервопривода от 1 до 180, второй цикл уменьшает позицию(pos) от 180 до 1. И серво привод будет перемещаться влево в право. Хотелось бы сказать на 180 градусов, но серво привод SG90 где то на pos=177 прекращает своё движение и поэтому полных 180 градусов не получается, опять же для измерения углов я бы этот инструмент не использовал.

Рассмотрим первых цикл for:

сама конструкция for (действие перед началом цикла;условие пока выполняется цикл работает; действие на каждом шаге){блок кода выполняется на каждом шаге}. В нашем случае: for(в начале цикла pos приравнивается 1(pos=1); цикл будет продолжаться пока pos меньше или равно 180(pos <= 180); каждый шаг pos прибавит 1(pos+=1)). Каждый шаг этого цикла будет выполнятся следующий блок кода:

 

Функция write(pos) изменяет позицию сервопривода myservo на позицию-pos.

Потом присходит задержка в 15 милисекунд функцией:

Так как позиция pos при каждом шаге цикла for будет увеличиваться на 1, то каждые 15 милисекунд сервопривод будет двигаться на 1 (почти градус).

Второй цикл:

Делает тоже самое, но мы каждый шаг отнимаем из позиции pos 1 (pos -= 1).

поэтому серво привод будет двигаться в обратном направлении.

Блок loop будет повторятся постоянно.

Скетч закончился.

Видео процесса:

Продолжение статьи: Arduino. Взаимодействие с компьютером через USB порт.

Другие статьи по программированию плат Arduino можно посмотреть здесь.

Комментарии:

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

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