Проблемы с компиляцией 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.
@Kevin Kinane, 👍1
3 ответа
Вы можете заставить библиотеку RadioHead использовать вместо этого таймер 2. Это можно сделать, включив параметр define RH_ASK_ARDUINO_USE_TIMER2 в верхней части RH_ASK.cpp .
Более подробную информацию о том, как это сделать, можно найти в документации библиотеки RadioHead. Пожалуйста, посмотрите https://www.airspayce.com/mikem/arduino/RadioHead/classRH__ASK.html.
Ваше здоровье!
Микаэль Патель в целом дал ответ, но я хочу быть более точным.
В папке библиотек 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" и это сработало для меня.
Я знаю, что это старый пост, но предыдущий ответ вчера мне не помог, поэтому я надеюсь, что этот поможет кому-то в будущем.
Вы также можете использовать библиотеку ServoTimer2, чтобы переместить сервоприводы на таймер 2, если вам это больше нравится.
https://github.com/nabontra/ServoTimer2
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату