// Библиотека с расширенными функциями для работы с Servo #include // Создаём объект для работы с сервомоторами AmperkaServo servo; // Задаём имя пина, к которому подключён сервопривод constexpr uint8_t SERVO_PIN = 9; // Задаём имя пина FB, к которому подключён сервопривод constexpr uint8_t SERVO_PIN_FB = A5; void setup() { // Открываем Serial-порт Serial.begin(9600); // Подключаем сервомотор // servo.attach(SERVO_PIN); // Подключаем сервомотор с расширенными параметрами // Советуем использовать именно этот вариант для точной настройки мотора // servo.attach(pin, minPulseWidth, maxPulseWidth); // - pin: номер пина, к которому подключён сервопривод // - minPulseWidth: минимальная ширина импульса, соответствующая // максимальной скорости по часовой CW или против часовой CCW стрелки. // Опциональный и по умолчанию стоит 544 мкс. // - maxPulseWidth: максимальная ширина импульса, соответствующая // максимальной скорости по часовой CW или против часовой CCW стрелки. // Опциональный и по умолчанию стоит 2400 мкс. // - minAngle: минимальный угол поворота сервопривода. // Опциональный и по умолчанию стоит 0°. // Для сервопривода постоянного вращения установите 0°. // - maxAngle: максимальный угол поворота сервопривода. // Опциональный и по умолчанию стоит 180°. // Для сервопривода постоянного вращения установите 360°. // Данные возьмите из технических характеристик мотора // Если направление вращения окажется противоположным, // поменяйте показания импульсов местами servo.attach(SERVO_PIN, 544, 2400, 0, 360); // Подключаем обратную связь сервомотора // servo.attachFB(pinFB, voltageFBCW, voltageFBCCW); // - pinFB: номер пина, к которому подключён сигнал обратной связи от сервопривода // - voltageFBCW: напряжение обратной связи в крайнем положении по часовой стрелке CW // - voltageFBCCW: напряжение обратной связи в крайнем положении против часовой стрелки CCW // Данные возьмите из технических характеристик мотора servo.attachFB(SERVO_PIN_FB, 0, 3.3); } void loop() { // Задаём максимальную скорость вращения сервопривода по часовой стрелке CW servo.writeSpeed(255); // Ждём от 1 до 5 секунд delay(random(1000, 5000)); // Останавливаем сервопривод servo.writeSpeed(0); // Ждём одну секунду для полной остановки мотора delay(1000); // Считываем и выводим текущий угол сервопривода Serial.println(servo.readAngleFB()); // Ждём одну секунду для просмотра результата delay(1000); }