Использование Servo на Timer3 на Leonardo
Я хотел бы использовать библиотеку Radiohead и управлять сервоприводом с той же платы Leonardo.
Теперь библиотека Radiohead занимает timer1
и поэтому не может использоваться вместе с библиотекой servo
. (Он предлагает использовать timer2
, которого нет у Leonardo.)
Есть ли другие библиотеки Servo, использующие timer3
или timer4
, которые есть у Leonardo?
Я уже пробовал:
- https://github.com/nabontra/ServoTimer2 не компилируется
- https://www.pjrc.com/teensy/td_libs_TimerOne.html не работает (вызов функции блоки)
@clamp, 👍2
3 ответа
Можно ли использовать эту ШИМ-версию библиотеки Servo, написанную для Arduino MEGA? Глядя на код, похоже, что вам придется удалить блоки кода «else if (pin == 44)» и «else if (pin == 45)» в функциях attach() и detach() в Update. Servo_Hardware_PWM.cpp. Тут только предположить. Я не пробовал.
https://github.com/dadul96/Arduino-Servo-Hardware-PWM-Library
Вы можете попробовать вручную отправить сервоимпульсы, например:
digitalWrite(SERVOPIN,HIGH);
delayMicroseconds(pulseWidth);
digitalWrite(SERVOPIN,LOW);
Пока продолжительность импульсов постоянна, не имеет значения, происходят ли они регулярно.
Недостатком будет то, что может возникнуть дрожание, если есть прерывания, хотя есть преимущество, что это будет работать практически на любом выводе.
Если вам нужно простое доказательство концепции, этого может быть достаточно, чтобы протестировать ее.
В файле ServoTimers.h
стандартной библиотеки Arduino Servo измените таймер
#elif defined(__AVR_ATmega32U4__)
#define _useTimer3
typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t;
в Windows файл ServoTimers.h
находится в C:\Program Files (x86)\Arduino\libraries\Servo\src\avr
спасибо, но это приводит меня к ошибке компиляции, описанной здесь: https://forum.arduino.cc/index.php?topic=527356.0, @clamp
вы получите эту ошибку, только если не измените номер таймера на 3, как я пишу в ответе., @Juraj
окей исправил ошибку компиляции. теперь проблема в том, что как только сервопривод подключен (контакт 5), библиотека Radiohead, похоже, перестает работать., @clamp
может ли это быть проблема с питанием?, @Juraj
возможно, я попробую запустить его с внешним источником питания, а не с USB., @clamp
Интересно, что внутренний светодиод начинает пульсировать через несколько секунд после того, как я подключаю контакт сервопривода. он останавливает это снова через несколько секунд после отключения., @clamp
- Проблемы с пониманием минимальных и максимальных параметров серводвигателя
- Как Arduino Uno может поддерживать до 12 сервоприводов, если у него всего 6 цифровых выводов ШИМ?
- Управление сервоприводом без библиотеки сервоприводов
- Как изменить скорость нескольких сервоприводов, работающих одновременно с модулем PCA9685?
- Контакты ШИМ серводвигателей, Arduino Uno
- Управление сервоприводом с помощью ATtiny13A
- Энкодеры для точных поворотов робота
- Проектирование роботизированной руки с помощью Arduino Uno
Комментарий анонимного пользователя: «Извините, это не сработает. Я проверил таблицу данных ATMega32u4, и таймеры 3 и 4 не могут использоваться для изменения состояния контакта. Так что нет, аппаратное сервоуправление с использованием приведенного выше кода на Леонардо.`, @Greenonline