Как повернуть сервопривод на заданный градус без Servo.h?

Для поворота сервопривода на заданный угол без использования библиотеки Servo.h вам потребуется осуществить некоторые низкоуровневые операции, чтобы устанавливать значения ширины импульсов напрямую.

Во-первых, необходимо знать, какой диапазон значений ширины импульсов требуется для вашего сервопривода. Этот диапазон может варьироваться в зависимости от модели сервопривода, поэтому проверьте его в технической документации или спецификациях.

Основная идея заключается в том, что ширина импульса, отправляемого на сервопривод, определяет его положение. Обычно ширина импульсов варьируется от 1000 мкс до 2000 мкс, где 1000 мкс соответствует углу 0 градусов, а 2000 мкс - углу 180 градусов.

Чтобы повернуть сервопривод на заданный угол, вы можете использовать функцию delayMicroseconds() для создания нужной задержки перед изменением ширины импульса.

Ниже приведен пример кода, демонстрирующий, как это можно сделать:

// Пины, к которым подключен сервопривод и источник питания 
const int servoPin = 9;
const int powerPin = 10;

// Минимальная и максимальная ширина импульсов для вашего сервопривода
const int minPulseWidth = 1000;  // соответствует 0 градусам
const int maxPulseWidth = 2000;  // соответствует 180 градусам

void setup() {
  // Устанавливаем выходы
  pinMode(servoPin, OUTPUT);
  pinMode(powerPin, OUTPUT);

  // Включаем питание для сервопривода
  digitalWrite(powerPin, HIGH);
}

void loop() {
  // Поворот на 0 градусов
  setServoPosition(0);
  delay(1000);

  // Поворот на 90 градусов
  setServoPosition(90);
  delay(1000);

  // Поворот на 180 градусов
  setServoPosition(180);
  delay(1000);
}

void setServoPosition(int angle) {
  // Преобразуем угол в диапазон ширины импульсов
  int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);

  // Генерируем ширину импульса
  digitalWrite(servoPin, HIGH);
  delayMicroseconds(pulseWidth);
  digitalWrite(servoPin, LOW);
}

В этом примере используются приведенные величины ширины импульсов (1000 мкс и 2000 мкс) для диапазона углов от 0 до 180 градусов. Вы можете изменить эти значения в соответствии с требованиями вашего сервопривода.

Программа включает питание для сервопривода, устанавливает нужный угол поворота (0, 90 или 180 градусов) и затем ожидает 1 секунду перед следующим поворотом.

Надеюсь, этот ответ поможет вам поворачивать сервопривод на заданный угол без использования библиотеки Servo.h.