GyverLibs / ServoSmooth

Библиотека для плавного управления сервоприводами с Arduino
MIT License
22 stars 3 forks source link

WEMOS.CC S2 Mini (ESP32S2) - из 4х сервомоторов работают только первые 2 (по порядку объявления в коде) #8

Open aleta2020 opened 7 months ago

aleta2020 commented 7 months ago

Всем привет! Столкнулся с проблемой: есть 4 сервомотора (39,37,18 и 16 пины). В примере библиотеки ( examples/manyServos/manyServos.ino ) работают только первые 2 мотора (в порядке описания в коде: servos[0] и servos[1]). Моторы servos[2] и servos[3] не подают признаков жизни. При этом в примере библиотеки ESP32Servo ( Multiple-Servo-Example-Arduino.ino ) все работает корректно. На форумах нашел такую инфу: "ESP32S2 ограничивает работу периферийных устройств LEDc на частоте ниже 152 Гц, которую пытается использовать библиотека ESp32Servo.h" (сервомоторам требуется 50 Гц). Методом "научного тыка" выявил, что управлять частотой можно функцией библиотеки ESP32Servo servo3.setPeriodHertz(nn); Таким образом, если внести после servo[2].attach() строку servo[2]._servo.setPeriodHertz(52), то моторы работают (значение 50 не работает). Описание функции setPeriodHertz() не нашел. Отсюда вопрос: это фича или баг? :-) Предлагаю подобный обход особенностей ESP32S2/S3 отразить в описании к библиотеке. Может добавить в пример manyServos данный код? и сделать публичной функцию setPeriodHertz для объекта ServoSmooth? Или есть другое решение этой проблемы для ESP32S2?