Используя таймер в фазово-корректном режиме, сгенерируйте ШИМ-сигнал для сервопривода (Uno)

Поэтому мне нужно генерировать ШИМ-сигнал для сервопривода, используя таймер в режиме фазовой коррекции. Плюс, работая с потенциометром, поворачивайте сервопривод влево-вправо. Я реализовал вторую часть задачи, но понятия не имею, что добавить в свой код, чтобы выполнить первую часть задачи. Вот мой код:

#include <Servo.h>
Servo myservo;  // создаем сервообъект
int potpin = A0;  // аналоговый контакт A0 для потенциометра
int val;    // значение с вывода A0

void setup() {
  myservo.attach(5);  // сервопривод подключен к контакту 5
}

void loop() {
  val = analogRead(potpin);            // получить значение от потенциометра A0 (0-1023)
  int newval = map(val, 0, 1023, 0, 180);     // сопоставление с (0-180)
  myservo.write(newval);                  // поворачиваем сервопривод в соответствии с отображаемым значением
  delay(15);                           // небольшая задержка для вращения сервопривода
}

И схема tinkercad:tinkercad

, 👍0

Обсуждение

Вы читали техническое описание микроконтроллера ATmega328p? В частности, вы читали раздел о Таймере 1?, @Edgar Bonet

@EdgarBonet Я читал о таймерах, но не смог применить их в коде., @Arthur Kartashov

Это также означает, что это упражнение исключает использование myservo.write(newval) для управления сервоприводом. Вы должны сделать это вручную. Эта ветка может помочь вам начать работу: https://forum.arduino.cc/t/creating-your-own-pwm-to-control-a-servo/129869, но не пытается использовать фазовую ШИМ., @6v6gt