Проблемы с компиляцией RadioHead и Servo

У меня возникла эта проблема при попытке скомпилировать свой скетч. Я использую радиочастотные модули для передачи данных между устройствами и серводвигателем для управления наклоном рампы. Я понимаю, что обе библиотеки используют ТАЙМЕР 1, но я не уверен, как изменить одну из них на использование ТАЙМЕРА 2, спасибо.

Arduino: 1.8.7 (Windows 10), Board: "Arduino/Genuino Uno"

libraries\Servo\avr\Servo.cpp.o (symbol from plugin): In function `ServoCount':

(.text+0x0): multiple definition of `__vector_11'

libraries\RadioHead\RH_ASK.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compiling for board Arduino/Genuino Uno.
Board at COM4 is not available

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

, 👍1


3 ответа


1

Вы можете заставить библиотеку RadioHead использовать вместо этого таймер 2. Это можно сделать, включив параметр define RH_ASK_ARDUINO_USE_TIMER2 в верхней части RH_ASK.cpp .

Более подробную информацию о том, как это сделать, можно найти в документации библиотеки RadioHead. Пожалуйста, посмотрите https://www.airspayce.com/mikem/arduino/RadioHead/classRH__ASK.html.

Ваше здоровье!

,

1

Микаэль Патель в целом дал ответ, но я хочу быть более точным.

В папке библиотек Arduino (C:\Users[USER_NAME]\Documents\Arduino\libraries\RadioHead) есть файл с именем «RH_ASK.cpp», куда вам нужно вставить следующую строку:

#define RH_ASK_ARDUINO_USE_TIMER2

Вы можете открыть файл cpp с помощью Notepad. Я добавил строку между «include <RHCRC.h>» и "#ifndef SAMD51" и это сработало для меня.

Я знаю, что это старый пост, но предыдущий ответ вчера мне не помог, поэтому я надеюсь, что этот поможет кому-то в будущем.

,

0

Вы также можете использовать библиотеку ServoTimer2, чтобы переместить сервоприводы на таймер 2, если вам это больше нравится.

https://github.com/nabontra/ServoTimer2

,