Arduino с сервоприводами, функцией тона () и светодиодом RGB

Я делаю проект Arduino с 2 сервоприводами, 1 зуммером и 1 светодиодом RGB ...

Я использую плату Arduino Uno с 6 контактами PWM (3, 5, 6, 9, 10, 11) ...

Проблема в том, что мне нужно 3 контакта с ШИМ для светодиода RGB. Но серво-библиотека отключает ШИМ на контактах 9 и 10. Из https://www.arduino.cc/reference/en/libraries/servo/: On boards other than the Mega, use of the library disables analogWrite() (PWM) functionality on pins 9 and 10, whether or not there is a Servo on those pins.

И функция tone () для использования зуммера мешает выходу ШИМ на контактах 3 и 11. Из https://www.arduino.cc/reference/en/language/functions/advanced-io/tone/: Use of the tone() function will interfere with PWM output on pins 3 and 11 (on boards other than the Mega).

Итак, у моего светодиода RGB есть только контакты 5 и 6 ...

Есть ли способ использовать Servo без библиотеки? Или управлять зуммером без функции tone ()?


person BrunoTS    schedule 19.11.2020    source источник
comment
используйте активный зуммер. это будет гудеть с простой цифровой записью   -  person Juraj    schedule 19.11.2020
comment
Активный зуммер односторонний. Другой - осознать, что вам не нужна дрянная и раздутая библиотека для управления степпером. Все, что вам нужно, - это по одному штырю на шаговый двигатель. Мои роботы-гексаподы много лет назад использовали 18 сервоприводов на одном 16-битном таймере.   -  person TomServo    schedule 20.11.2020


Ответы (1)


Что сказал Джурадж. Также:

Существуют библиотеки для программного ШИМ, которые вы можете использовать, см. SoftPWM и (отредактированная вилка первого) SoftPWM.

Они используют только один таймер и могут генерировать сигналы ШИМ на любом контакте.

Я сам не пробовал и не тестировал эти библиотеки, но полагаю, что они работают хорошо.

Если вы когда-нибудь пойдете по пути SAMD21, здесь есть библиотека PWM для тех Arduinos, которые используют этот микроконтроллер, здесь. Пришлось сказать это, потому что это я написал. Прости.

person ocrdu    schedule 19.11.2020