IRremote, IRsendDemo.ino, Ошибка компиляции.

Тема в разделе "Arduino & Shields", создана пользователем Jimbik, 15 апр 2015.

  1. Jimbik

    Jimbik Нуб

    скачал отсюда библиотеку IRremote, распаковал, переименовал, в общем как по инструкции.
    приём команд работает, а вот передача не работает
    загружаю пример IRsendDemo.ino, не чего не меняю, нажимаю кнопку "Проверить", а мне выдает ошибку компиляции
    Код (Text):
    IRsendDemo.ino: In function 'void loop()':
    IRsendDemo.ino:21:14: error: 'class IRsend' has no member named 'sendSony'
    Multiple libraries were found for "IRremote.h"
    Used: C:\Program Files (x86)\Arduino\libraries\IRremote
    Not used: C:\Program Files (x86)\Arduino\libraries\RobotIRremote
    Ошибка компиляции.
    пробовал ставить sendNEC, sendRC5, sendRC6, результат тот же - ошибка компиляции.
    работает только если отправлять RAW, но RAW слишком много места занемат.
    ну вот и собственно вопрос, как это починить?
    пока шарился по просторам интернета находил про #include <Arduino.h>, но это в файл IRremoteInt.h, но все равно попробовал вставить и в IRremote.h, со скобками и без, ток хуже становилось.
     
  2. Unixon

    Unixon Оракул Модератор

    Проверьте, что у вас за библиотека по указанному пути лежит.
    То, что их две с одинаковыми заголовками - это уже неправильно.
    Ну и кроме того, может стоит ее обновить?
     
  3. Jimbik

    Jimbik Нуб

    C:\Program Files (x86)\Arduino\libraries\IRremote это библиотека которую я скачал вчера, а еще позавчера и так несколько дней подряд, пока мучаюсь с данной проблемой, и на двух компах. версия ардуины на обоих пк 1.6.3
    собственно он пишет что её и использует
    C:\Program Files (x86)\Arduino\libraries\RobotIRremote а эта родная ардуиновская библиотека и у неё другой синтаксис(пробовал оставить только её)

    ну и если есть посвежее, то где её взять? написано что некоторые файлы обновились 9 дней назад
     
  4. Unixon

    Unixon Оракул Модератор

    Откуда скачали?
     
  5. Jimbik

    Jimbik Нуб

  6. Unixon

    Unixon Оракул Модератор

    Обратите внимание на #ifdef вокруг каждого кусочка кода. Чтобы его включить, вам нужно определить соответствующий макрос через #define.

    Ну и еще переименуйте или спрячьте куда-нибудь файлы из RobotIRremote.
     
  7. Jimbik

    Jimbik Нуб

    спасибо за ответ, но я чет его не понял, опыта почти нет в этом деле

    вот код стандартного примера который у меня не компилируется:
    Код (Text):
    /*
    * IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
    * An IR LED must be connected to Arduino PWM pin 3.
    * Version 0.1 July, 2009
    * Copyright 2009 Ken Shirriff
    * http://arcfn.com
    */

    #include <IRremote.h>

    IRsend irsend;

    void setup()
    {
      Serial.begin(9600);
    }

    void loop() {
      if (Serial.read() != -1) {
        for (int i = 0; i < 3; i++) {
          irsend.sendSony(0xa90, 12); // Sony TV power code
          delay(40);
        }
      }
    }
    Вы я так понимаю говорите о файле библиотеке IRremote.h
    ткните меня пожалуйста конкретно что надо сделать чтоб заработал например IRsendNEC
     
  8. Unixon

    Unixon Оракул Модератор

    А желание разобраться есть? :)

    Вот нужный вам кусок кода из IRremote.h
    Код (Text):
    #ifdef DECODE_NEC
    long decodeNEC(decode_results *results);
    #endif
    Что нужно сделать, чтобы он включился?
    Правильно, нужно написать в самом начале #define DECODE_NEC

    Это сложно?
     
  9. Jimbik

    Jimbik Нуб

    спасибо.
    не сложно.
    за это время я нашел статью с библиотекой и примером в которой компиляция идет
    но вот пока передать не получается, я принимаю код кнопки, правлю скеч, заливаю, отправляю опять в приемник и получаю другой код, соответственно желание есть и я пытаюсь, а не сижу и жду ответа))

    -------------------------------------
    UpDate

    в общем по вашему совету не чего не получилось, но получилось с библиотекой из этой статьи
    посему делаю вывод, что релиз библиотеки из первого сообщения не работоспособен (для данного утверждения обязательно смотреть дату сообщения и релиза!)

    Благодарю Вас за помощь!
     
    Последнее редактирование: 16 апр 2015
  10. Unixon

    Unixon Оракул Модератор

    Промазал немного с кодом. Для Send* то же самое нужно сделать, там все функции так обрамлены.
     
  11. Jimbik

    Jimbik Нуб

    c #define SEND_SONY в актуальной версии не сработало
     
  12. Unixon

    Unixon Оракул Модератор

    Этот макрос должен быть виден еще и внутри .cpp файла. Там тоже все внутри #ifdef...#endif.

    p.s. Вы бы хоть сообщения компилятора что ли приводили, а то телепатией приходится заниматься.
     
  13. Jimbik

    Jimbik Нуб

    ну как я написал выше, с другой версией этой библиотеке все заработало, так что надобности больше нет
    если только ради интереса, а лог ошибки точно такой же как и в первом сообщении
     
  14. Unixon

    Unixon Оракул Модератор

    Интересно какой ревизии в гите она соответствует...
     
  15. Jimbik

    Jimbik Нуб

  16. atreid

    atreid Нуб

  17. Jimbik

    Jimbik Нуб