Конфликт библиотек Tone и IRemote

Waik
Offline
Зарегистрирован: 28.05.2014

Здравствуйте, использую Arduino Uno. Вот инклюды:

#include <IRremote.h>
#include "pitches.h"
#include <Servo.h> 
.....

И получаю:

(Tone.cpp.o): In function `__vector_7':
D:\Programs\Arduino\hardware\arduino\cores\arduino/Tone.cpp:535: multiple definition of `__vector_7'
IRremote\IRremote.cpp.o:D:\Programs\Arduino\libraries\IRremote/IRremote.cpp:311: first defined here

Меняю таймеры в файле IRremoteint.h в строках, начиня с 27строки, но ошибка не меняется.

С Уважением, Станислав.

 

Radjah
Offline
Зарегистрирован: 06.08.2014

Там же ясно написано, что __vector_7 объявлено несколько раз. Надо имя переменной менять.

Waik
Offline
Зарегистрирован: 28.05.2014

В файлах:

IRremote.cpp

IRremote.h

IRremoteint.h

Этой переменной нет.

 

Radjah
Offline
Зарегистрирован: 06.08.2014

Тогда смотри, что лежит в libraries в папке скетчей и папке с IDE.

maksim
Offline
Зарегистрирован: 12.02.2012

Дело в том, что Tone и IRremote по умолчанию используют один и тот же таймер и один и тот же вектор прерывания, на который собственно и ругается компилятор. Сделать нужно следующее, так же обратите внимание, если вы хотите не только принимать сигнал, а еще и передавать, то после этих манипуляций вывод для подключения ИК-передатчика (светодиода) будет не 3, а 9.

Waik
Offline
Зарегистрирован: 28.05.2014

maksim ,большое спасибо! Я уже находил такой совет на одном из англоязычных форумов, но вот IDE я не перезагружал после внесения изменинй в IRremoteint.h.

После этого появилась другая проблема.

Ошибка:

Servo\Servo.cpp.o: In function `__vector_11':

Решилось это использованием другой библиотеки SERVO, ServoTimer2.

https://code.google.com/p/arduino-ppm-servo/source/browse/libraries/ServoTimer2/

maksim
Offline
Зарегистрирован: 12.02.2012

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

Waik
Offline
Зарегистрирован: 28.05.2014

Я вот тоже этого боюсь. Через пару минут узнаю и сообщу.

Waik
Offline
Зарегистрирован: 28.05.2014

Компилится без ошибок, серва работает.