Показано с 1 по 3 из 3
  1. #1
    Новичок
    Регистрация
    28.11.2011
    Сообщений
    2
    Вес репутации
    0

    По умолчанию IRremote.h использование изнутри другой библиотеки

    В ардуине новичек, поэтому если вопрос совсем простой - извиняйте. Гуглил, но ничего не нагуглилось...

    Итак:

    1. Есть либа IRremote, из скетча все работает на раз, компиляется опнятное дело тоже.
    2. Есть другая либа, заточенная на управление кнопками подключонными прямо к портам - M2TKLIB, тоже все с ней понятно.
    3. В моем проекте не хочется кнопок, хочется пультика, благо есть. Родил либе "event source", отключил встроенный дебаунсинг - стреляет.

    Дальше захотелось добрых дел, послал сорец автору M2TKLIB, чтобы был выбор кнопки или пульт. Дядько подсуетился, прислал файлец, попросил подложить в директорит с либой - проверить.

    Сосбтвенно проблема: не компиляется, ругается на инклюд IRremote.h. Происходи дело в обычных с или с++, разобрался бы без проблем. Но как arduino IDE зовет компилятор, что ему передает и можно ли переопределить опцайки - для меня пока темный лес... И скетча этот-же код понятно работает на раз.

    Само файло:
    PHP код:
    /*


      m2esarduinoir.c
      
      m2tklib = Mini Interative Interface Toolkit Library
      
      event source handler for IRremote library (arduino environment)
      http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html
      
      m2tklib contributed code (issue 34)
      
    */


    #include "m2.h"
    #include <IRremote.h>


    int RECV_PIN 11;
    IRrecv irrecv(RECV_PIN);
    decode_results results;


    uint8_t m2_es_arduino_ir(m2_p epuint8_t msg
    {
      switch(
    msg)
      {
        case 
    M2_ES_MSG_GET_KEY:
          if (
    irrecv.decode(&results)) 
          {
            
    irrecv.resume(); // Receive the next value
            
    switch(results.value
            {
              case 
    0xFFC23D:
                return 
    M2_KEY_EVENT(M2_KEY_SELECT);         /* the M2_KEY_EVENT() macro will  */
              
    case 0xFFB04F:                                                /* disable the debounce algorithm */
                
    return M2_KEY_EVENT(M2_KEY_EXIT);
              case 
    0xFF02FD:
                return 
    M2_KEY_EVENT(M2_KEY_NEXT);
              case 
    0xFF22DD:
                return 
    M2_KEY_EVENT(M2_KEY_PREV);
              case 
    0xFF0000:
                return 
    M2_KEY_EVENT(M2_KEY_DATA_UP);
              case 
    0xFF0001:
                return 
    M2_KEY_EVENT(M2_KEY_DATA_DOWN);
              default:
                return 
    M2_KEY_NONE;
             }
          }
        default:
          return 
    0;
      }

    Собственно ошибки:
    PHP код:
    In file included from C:\ssw\arduino-0023\libraries\M2tklib\utility\m2esarduinoir.c:17:
    C:\ssw\arduino-0023\libraries\IRremote/IRremote.h:24errorexpected '='','';''asm' or '__attribute__' before 'decode_results'
    C:\ssw\arduino-0023\libraries\IRremote/IRremote.h:44errorexpected '='','';''asm' or '__attribute__' before 'IRrecv'
    C:\ssw\arduino-0023\libraries\IRremote/IRremote.h:69errorexpected '='','';''asm' or '__attribute__' before 'IRsend'
    C:\ssw\arduino-0023\libraries\M2tklib\utility\m2esarduinoir.c:21errorexpected '='','';''asm' or '__attribute__' before 'irrecv' 
    Зараннее спасибо

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: IRremote.h использование изнутри другой библиотеки

    Библиотеку m2.h забыл выложить? Без нее как проверить твой скетч?

  3. #3
    Новичок
    Регистрация
    28.11.2011
    Сообщений
    2
    Вес репутации
    0

    По умолчанию Re: IRremote.h использование изнутри другой библиотеки

    Только m2.h будет мало, m2tklib здоровая зараза. В аттачменте либа целиком.

    Опять-же файло в первом сообщении, это не скетч, а часть библиотеки.

    Скетч для получения той самой ошибки компиляции:
    PHP код:
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include "M2tk.h"
    #include "utility/m2ghlc.h"

    #define BACKLIGHT_PIN     13

    LiquidCrystal_I2C lcd(0x27,20,4);  // Set the LCD I2C address
    M2_LABEL(hello_world_labelNULL"Hello World!");
    M2tk m2(&hello_world_labelNULLNULLm2_gh_lc);

    void setup() {
      
    lcd.init();
      
    lcd.backlight();
      
    m2_SetLiquidCrystal(&lcd204);
    }

    void loop() {
      
    m2.draw();
      
    delay(500);

    Вложения Вложения

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •