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);
}