Используя таймер в фазово-корректном режиме, сгенерируйте ШИМ-сигнал для сервопривода (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:
0
Смотрите также:
- Проблемы с пониманием минимальных и максимальных параметров серводвигателя
- Как Arduino Uno может поддерживать до 12 сервоприводов, если у него всего 6 цифровых выводов ШИМ?
- Управление сервоприводом без библиотеки сервоприводов
- Как изменить скорость нескольких сервоприводов, работающих одновременно с модулем PCA9685?
- Контакты ШИМ серводвигателей, Arduino Uno
- Управление сервоприводом с помощью ATtiny13A
- Проектирование роботизированной руки с помощью Arduino Uno
- Использование Servo на Timer3 на Leonardo
Вы читали техническое описание микроконтроллера 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