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 ep, uint8_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:24: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'decode_results'
C:\ssw\arduino-0023\libraries\IRremote/IRremote.h:44: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'IRrecv'
C:\ssw\arduino-0023\libraries\IRremote/IRremote.h:69: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'IRsend'
C:\ssw\arduino-0023\libraries\M2tklib\utility\m2esarduinoir.c:21: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'irrecv' 
 Зараннее спасибо
	 
	
	
	
		Re: IRremote.h использование изнутри другой библиотеки
	
	
		Библиотеку m2.h забыл выложить? Без нее как проверить твой скетч?
	 
	
	
		Вложений: 1
	
	
		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_label, NULL, "Hello World!");
M2tk m2(&hello_world_label, NULL, NULL, m2_gh_lc);
void setup() {
  lcd.init();
  lcd.backlight();
  m2_SetLiquidCrystal(&lcd, 20, 4);
}
void loop() {
  m2.draw();
  delay(500);
}