Скажите, когда Стрела становится "неизвестным устройством", вот этот компонент на рисунке сильно греется?
Скетч прислать не могу, от него уже ничего не осталось.. А вот исчезновение питания при перепрошивке могло и быть, возможно не дождался и вынул кабель раньше времени... Поступил пока самым легким способом: сдал по гарантии, не ломая голову и не тратя нервы. Посмотрим, что скажут.. =)
Здаров! Эт снова я =) (С новой стрелой) Такой вопрос. Скетч. Код (Text): #include "IRremote.h" #include "Wire.h" #include "Strela.h" void setup() { } void loop() { } Возникает ошибка: Код (Text): Strela\Strela.cpp.o: In function `_stepMotor': D:\Документы\Программы\ARDUINO\libraries\Strela/Strela.cpp:46: multiple definition of `__vector_41' Arduino-IRremote-master\IRremote.cpp.o:D:\Документы\Программы\ARDUINO\libraries\Arduino-IRremote-master/IRremote.cpp:375: first defined here collect2: error: ld returned 1 exit status Ошибка компиляции. А так если поменять местами библиотеку стрелы и ИК Код (Text): Arduino-IRremote-master\IRremote.cpp.o: In function `__vector_41': D:\Документы\Программы\ARDUINO\libraries\Arduino-IRremote-master/IRremote.cpp:375: multiple definition of `__vector_41' Strela\Strela.cpp.o:D:\Документы\Программы\ARDUINO\libraries\Strela/Strela.cpp:46: first defined here collect2: error: ld returned 1 exit status Ошибка компиляции. Это между собой конфликтуют библиотеки? Как это исправить?
И как их глобально можно переименовать? __vector_41 - не находится, это не название.=( нашёл в обоих кодах "uint8_t" может оно? причём в ИК библеотеке всего 2 раза встречается. пробовал тупо переименовать - ошибки при компиляции возникают(что и ожидалось)
Да, действительно. Значит, возникает после препроцессинга (обработки #include, #define и т.п.). Очередное подтверждение того, что макросы -- скрытая угроза. В самой Arduino IDE (1.0.6, а у Вас какая версия, кстати?) такую нашёл строчку кода: #define _VECTOR(N) __vector_ ## N файл ./hardware/tools/avr/lib/avr/include/avr/sfr_defs.h Дальше пусть авторы библиотек разбираются.
1.6.0 версия =) Не знаете, может есть где альтарнативная библиотека для обработки сигналов с ИК датчика?
Библиотеку отсюда брали? https://github.com/shirriff/Arduino-IRremote или откуда? Похоже дело в использовании одного и того же таймера. _stepmotor() вообще находится в локальной области видимости Strela.cpp А, всё, нашел. В файлике IRremoteInt.h: Код (C): #elif defined(__AVR_ATmega32U4__) //#define IR_USE_TIMER1 // tx = pin 14 //#define IR_USE_TIMER3 // tx = pin 9 #define IR_USE_TIMER4_HS // tx = pin 10 Стрела использует тот же 4-й таймер для своих нужд. Попробуйте это место в этом файле привести к такому виду: Код (C): #elif defined(__AVR_ATmega32U4__) #define IR_USE_TIMER1 // tx = pin 14 //#define IR_USE_TIMER3 // tx = pin 9 //#define IR_USE_TIMER4_HS // tx = pin 10 т.е. используйте первый таймер) Не знаю, что конкретно тут означают комментарии, и странно, что вообще этот блок кода используется для teensy... Ну да ладно. В общем, если верить комменту, то для tx нужно использовать ногу MISO, именно она имеет номер 14 в pins_arduino.h для leonardo.
Скомпилилось! Спасибо! Сам бы не понял точно, и в интернете ничего по этому поводу нет. Повод добавить в первый пост на вопрос-ответ.
Под __vector_XX_ скрывается обработчик прерывания таймера. Если в нескольких библиотеках объявлены обработчики одного и того же прерывания, то на этапе линковки возникает проблема какой из них использовать. Исправление этой ситуации выше продемонстрировал acos.
ну ладно, из стандартных примеров переделанно (почему -то немного стыдно выкладывать). Код (Text): #include "Wire.h" //библиотеки #include "Strela.h" //библиотеки #include "IRremote.h" //библиотеки #define RECV_PIN P12 //директива назначить контакт 12 на вход ИК IRrecv irrecv(RECV_PIN); //хз decode_results results; //хз void setup() { Serial.begin(9600); irrecv.enableIRIn(); // старт приёма данных с ИК } void loop() { long i; // сюда результат if (irrecv.decode(&results)) //хз { Serial.println(results.value); i = results.value; irrecv.resume(); // Receive the next value } if (i == 50167935) uDigitalWrite(L1,1);// нажали на пульте "1" - зажгли светодиод 1 delay(100); }
Вопрос по библиотеке Стрелы. IDE 1.7.0, богомерзкий Мак. Импортирую библиотеку в соответствии с инструкцией. Добавляю в скетч #include <Strela.h> Получаю вот такую ошибку: Ну ок, мне не сложно - добавляю в скетч #include <Wire.h> И получаю целый набор: Куды бечь, что смотреть?
Мистика какая-то. Ставлю библиотеку Multiservo - всё нормально компилится, хотя в .cpp точно так же вставлен #include <Wire.h> - но только в этот раз всё почему-то находится.
Arduino IDE 1.7.0 Это версия отсюда ? http://arduino.org/downloads Я бы ей пока не доверял) http://hackaday.com/2015/04/06/arduino-ide-forked/ Православным пока считается (думаю и впредь будет считаться) вот это: http://arduino.cc/en/Main/Software - тут 1.6.3. последняя. С ней не пробовали? Wire.h ни при чём. Дело в #include <avr/io.h> #include <avr/interrupt.h> а в мультисерво эти штуки не используются Попробуйте с версией arduino 1.6.3