1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/x223222981-VarSpeedServo

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 7.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 02:40 004bfaf

VarSpeedServo — библиотека для Arduino

Содержание

Описание

Это библиотека для управления сервомоторами в среде Arduino, источник форка, которая позволяет использовать до 8 сервомоторов асинхронно (поскольку она использует прерывания). Кроме того, вы можете настраивать скорость перемещения сервомотора, ждать завершения перемещения (блокировка) и создавать последовательность асинхронных перемещений.

Код является модификацией стандартной библиотеки Arduino Servo.h, которую первоначально адаптировал Korman и опубликовал на форуме Arduino, добавив возможность изменения скорости сервомотора. Затем Philip van Allen провёл обновление до версии 1.0+, добавив возможность ожидания завершения перемещения.* Поддерживает до 8 сервомоторов

  • Поддерживает синхронное и асинхронное управление всеми сервомоторами
  • Поддерживает настройку скорости сервомотора
  • После вызова функции write() можно выбрать ожидание завершения перемещения перед возвратом
  • Поддерживает отправку последовательности действий (каждое действие имеет положение и скорость)

Пример 1

Перемещение одного сервомотора, ожидание завершения первого перемещения, затем выполнение перемещения другого сервомотора

#include <VarSpeedServo.h> 

VarSpeedServo myservo;    // Создаем объект myservo для управления сервомотором

void setup() {
  myservo.attach(9);  // Соединяем пин  Yöntem 9 с объектом myservo
}

void loop() {
  myservo.write(180, 30, true);        // Перемещаемся до 180 градусов со скоростью 30, ожидаем завершение перемещения
  myservo.write(0, 30, true);          // Перемещаемся до 0 градусов со скоростью 30, ожидаем завершение перемещения
}
```### Пример 2
Два сервопривода одновременно перемещаются с различной скоростью, после чего ждут завершения перемещения перед выполнением следующего действия.


```c++
#include <VarSpeedServo.h>

// Создание объектов сервоприводов
VarSpeedServo myservo1;
VarSpeedServo myservo2;

void setup() {
  myservo1.attach(9);
  myservo2.attach(8);
}

void loop() {

  int LEF = 0;
  int RIG = 180;

  int SPEED1 = 160;
  int SPEED2 = 100;

  myservo1.write(LEF, SPEED1);     
  myservo2.write(LEF, SPEED2);
  myservo1.wait(); // Ждет завершения движения myservo1
  myservo2.wait();  // Ждет завершения движения myservo2
}
```  myservo1.write(RIG, SPEED1);     
  myservo1.wait(); // Ждет завершения движения myservo1

  myservo1.write(LEF, SPEED1); 
  myservo2.write(RIG, SPEED2);  
  myservo1.wait();
  myservo2.wait();    

  myservo1.write(RIG, SPEED1);     
  myservo1.wait();

  delay(1000);

}

Прочие примеры включены в пакете установки и могут быть просмотрены в разделе "Примеры Arduino".

Функции библиотеки

  • attach(pin) // Указывает Arduino, что данные сервоприводов приходят с указанного пина
  • attach(pin, min, max) // Устанавливает минимальное и максимальное значения импульсов для объекта сервопривода (в микросекундах)
  • write(value) // Устанавливает угол поворота сервопривода
  • write(value, speed) // Устанавливает скорость движения сервопривода и направление его перемещения, где 0 — полная скорость, а 1–255 — от медленного до быстрого
  • write(value, speed, wait) // Ожидание — это логическое значение, если true, то вызов функции будет заблокирован до завершения движения
  • writeMicroseconds() // Устанавливает длительность импульса сервопривода (в микросекундах)
  • read() // Получение текущего угла поворота сервопривода
  • readMicroseconds() // Чтение текущей длительности импульса
  • attached() // Проверяет соединение объекта сервопривода с пином Arduino
  • detach() // Отсоединяет объект сервопривода от Arduino- slowmove(value, speed) // Эквивалент функции write(value, speed), но используется для совместимости с версией Korman
  • stop() // Остановка сервопривода на текущем положении
  • sequencePlay(sequence, sequencePositions) // Запуск последовательности действий, начиная с позиции 0
  • sequencePlay(sequence, sequencePositions, loop, startPosition) // Запуск последовательности действий, loop — активация циклического режима (логическое значение), startPosition — начало с указанной позиции
  • sequenceStop() // Остановка последовательности действий на текущем положении
  • wait() // Ждет завершения движения сервопривода
  • isMoving() // Проверяет, находится ли сервопривод в состоянии движения

УстановкаСм. Тайцзи Мейкер >> Установка библиотек в Arduino IDE

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/x223222981-VarSpeedServo.git
git@api.gitlife.ru:oschina-mirror/x223222981-VarSpeedServo.git
oschina-mirror
x223222981-VarSpeedServo
x223222981-VarSpeedServo
master