Skip to content

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

@aleta2020

Description

@aleta2020

Всем привет!
Столкнулся с проблемой: есть 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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions