Добрый день. Помогите разобраться с ошибкой. Пытаюсь ардуину впихнуть BT-модуль через библиотеку SoftwareSerial и PCF8574. При компиляции вылезает вот такая ошибка: PCF8574\PCF8574.cpp.o: In function `__vector_3': C:\Users\Наталья\Documents\Arduino\libraries\PCF8574/PCint.h:104: multiple definition of `__vector_3' SoftwareSerial\SoftwareSerial.cpp.o:C:\arduino-1.6.4\hardware\arduino\avr\libraries\SoftwareSerial/SoftwareSerial.cpp:227: first defined here PCF8574\PCF8574.cpp.o: In function `PCint': C:\Users\Наталья\Documents\Arduino\libraries\PCF8574/PCint.h:73: multiple definition of `__vector_4' SoftwareSerial\SoftwareSerial.cpp.o:C:\arduino-1.6.4\hardware\arduino\avr\libraries\SoftwareSerial/SoftwareSerial.cpp:392: first defined here PCF8574\PCF8574.cpp.o: In function `PCint': C:\Users\Наталья\Documents\Arduino\libraries\PCF8574/PCint.h:73: multiple definition of `__vector_5' SoftwareSerial\SoftwareSerial.cpp.o:C:\arduino-1.6.4\hardware\arduino\avr\libraries\SoftwareSerial/SoftwareSerial.cpp:392: first defined here collect2.exe: error: ld returned 1 exit status Вроде как ругается на многоразовое определение функций (multiple definition of `__vector_3') Я полазил по этим файлам, там таких функций нет. Я сильно не спец в Сях. Подскажите, плз, что с этим делать? Вот код определения бибилотек: Код (C++): #include <CyberLib.h> #define BT_ON #ifdef BT_ON #include <SoftwareSerial.h> SoftwareSerial mySerial(9,10); // RX, TX char lstCommand = ' '; #endif #include <Wire.h> // Required for I2C communication #include "PCF8574.h" // Required for PCF8574 /** PCF8574 instance */ PCF8574 expander;
Речь идёт о векторах прерываний 'PCINTn_vect'. Обе библиотеки декларируют обработчики для одних и тех же прерываний. Устранять конфликты путём правки библиотек.
Спасибо за подсказку. Не понял как править эти самые векторы. Однако, в библиотеке PCF8574 нашел строку, которая блокирует прерывания вообще. В данном случае они мне не нужны, так что вполне можно отключить.
Лично Вам-то прерывания может и не нужны, а вот библиотеки без них работать не будут. Так понимаю, что PCF8574 можно подключить через интерфейс I2C -- http://playground.arduino.cc/Main/PCF8574Class. Там по ссылке приведён пример работы с PCF8574 без использования прерываний. Просто боюсь, Вы не сможете разрулить этот конфликт с прерываниями.