Сервопривод Ардуино Скетч 5 плавное управление 4мя сервомоторами

Подключить библиотеку ServoSmooth v3.9 Скачать библиотеку можно здесь >>>   Данная библиотека является "дополнением" к стандартной библиотеке Servo.h и позволяет плавно управлять сервоприводом.

Автор скетча и библиотеки  https://alexgyver.ru/servosmooth/

Библиотеку можно найти и установить через менеджер библиотек по названию ServoSmooth в:

  • Arduino IDE (Инструменты/Управлять библиотеками)
  • Arduino IDE v2 (вкладка “Library Manager”)
  • PlatformIO (PIO Home, вкладка “Libraries”)

Скетч


/*
Данный скетч крутит 4 сервопривода с разными скоростями и ускорениями
Документация: https://alexgyver.ru/servosmooth/
*/

#define AMOUNT 4 // кол-во серво

#include <ServoSmooth.h>
ServoSmooth servos[AMOUNT];

uint32_t servoTimer;
uint32_t turnTimer;

int position1 = 10; // первое положение серв
int position2 = 160; // второе положение серв
boolean flag;

void setup() {

Serial.begin(9600);
// подключаем
servos[0].attach(2);
servos[1].attach(3);
servos[2].attach(4);
servos[3].attach(5);

// настраиваем макс. скорости и ускорения
// скор. по умолч. 100 град/с
// ускорение по умолч. 0.2
servos[0].setSpeed(180);
servos[1].setAccel(0.1);
servos[2].setSpeed(90);
servos[3].setAccel(0.5);

}

void loop() {

// каждые 20 мс
if (millis() - servoTimer >= 20) { // взводим таймер на 20 мс (как в библиотеке)

servoTimer += 20;
for (byte i = 0; i < AMOUNT; i++) {

servos[i].tickManual(); // двигаем все сервы. Такой вариант эффективнее отдельных тиков

}

}

// каждые 2 секунды меняем положение
if (millis() - turnTimer >= 2000) {

turnTimer = millis();
flag = !flag;
for (byte i = 0; i < AMOUNT; i++) {

if (flag) servos[i].setTargetDeg(position1);
else servos[i].setTargetDeg(position2);

}

}

}

You have no rights to post comments