Ajuda funcionamento soft Arduino(sensor IR)

Boas. Alguém aqui já fez algum projecto com comando IR? (comando infravermelho) Já encontrei vários códigos online, mas todos dão erro ao compilar:"C:\Programas\Arduino\libraries\RobotIRremote\IRremoteTools.cpp:5: error: 'TKD2' was not declared in this scope"

No programa principal apenas referem a biblioteca IRremote.h, mas acaba por dar erro numa "função???class???" de um arquivo biblioteca IRremoteTools.cpp. Em nenhum código vejo a inclusão desta ultima biblioteca, o que me faz estranhar o erro dado. Quando abro o sketch do programa, aparece logo a aba do sketch e da biblioteca IRremote.h, por estar definida no programa. Só não percebo o porquê de ele ir buscar a outra biblioteca sem haver referência a ela. O erro estará no programa ou no software arduino, já que nem sequer compila, excluindo para já erros no hardware. O que gostava de perceber é qual a razão do software dar erro numa biblioteca que não é incluída nem referida em parte nenhuma do código nem da bibliteca IRremote.h Estou a usar o Arduino 1.0.6 em windows XP sp3.

Que código?

Olá.
Um dos códigos testados(encontrado na net e supostamente a funcionar no autor)

#include <IRremote.h>
int RECV_PIN = 2;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
Serial.begin(9600);
pinMode(13, OUTPUT);
irrecv.enableIRIn();

}

void loop(){
if (irrecv.decode(&results)) {
Serial.println(results.value, DEC);
irrecv.resume();
}
if (results.value == 70){ digitalWrite(13,HIGH);}
if (results.value == 60){ digitalWrite(13,LOW);}
}

De qualquer forma, o que gostava de perceber é qual a razão de o software dar erro numa biblioteca que NÃO É INCLUÍDA NEM REFERENCIADA em parte nenhuma do código.
A biblioteca IRremote.h está nas pastas do programa Arduino.
Abrigado desde já.

O código compila normalmente usando a IDE 1.0.6.

FernandoGarcia: O código compila normalmente usando a IDE 1.0.6.

Estranho. É essa IDE que estou a usar, e noutros locais onde coloquei a pergunta, todos se queixam do mesmo erro. Pelo que ja vi ao pesquisar pelo erro, só na versão 1.0 do IDE é que parece não dar erro. Se remover a biblioteca que está a dar erro o código compila normalmente, mas é esquisito o IDE dar erro numa biblioteca que não está incluída, nem é fulcral, e era isso que gostava que alguém entendido explicasse. Resumindo: No IDE 1.0.6 SEM a biblioteca IRremoteTools.cpp o código compila sem erros. Com essa biblioteca na pasta(que é instalada quando se instala a IDE 1.0.6 o código dá erro, mas esta biblioteca não é referida em parte nenhuma do código. Imagem do IDE com erro e versão Já agora para comparação, estou a usar a board Arduino Uno, e o programmer AVR ISP(mas já testei outros e dá sempre erro). Fernando, dá para conformar se existe essa biblioteca que me está a dar erro no seu IDE? Obrigado desde já pela resposta.

Lá por a biblioteca não estar incluída no teu código, não quer dizer que não esteja a ser incluída pelo Arduino...

Tente deletar a biblioteca RobotIRremote.h que vem com a IDE. Talvez seja um problema de conflito entre bibliotecas. Vejo um exemplo que usa o arquivo que te falta. http://arduino.cc/en/Tutorial/RobotRemoteControl

Agradeço as respostas dadas, mas a dúvida persiste:

bubulindo, qual a razão do Arduino incluir bibliotecas que não estão referidas? Será que para cada projeto tenho de apagar TODAS as bibliotecas não usadas para evitar conflitos entre elas? Se é "normal" o Arduino incluir bibliotecas não declaradas, qual a necessidade de as declarar? Nos controladores da microchip nunca me ocorreu nada do género, por isso querer tentar perceber a razão de isto ocorrer.

FernandoGarcia, como escrevi antes, se remover a biblioteca IRremoteTools.cpp da pasta do IDE o código compila, mas isto remete-me para o que escrevi no 1º parágrafo. Terei de remover TODAS as bibliotecas não usadas no IDE para evitar possíveis conflitos em códigos futuros? Se a biblioteca IRremoteTools.cpp não é referida em lado nenhum não faz sentido dar erro; Além disso, se fosse o Arduino a incluir essa biblioteca o código dava erro quando a removi.

Resumindo: qual a razão do IDE dar erro numa biblioteca que existe e não é declarada em parte nenhuma, sendo que essa biblioteca pode ser fisicamente deletada e portanto não necessária ao código.

PS: Como disse antes, já tinha descoberto que deletar a biblioteca IRremoteTools.cpp resolvia o problema, mas gostava de saber o porquê de o fazer, e não apenas fazer "porque sim". Obrigado.

Nos controladores da Microchip estavas a usar o quê?

O problema aqui não são os microcontroladores (pessoalmente, odeio as PICs), mas sim o compilador que estás a usar.

Se queres ter controlo absoluto sobre o teu projecto, desinstala o Arduino e usa o avr-gcc com makefiles. Dessa forma garanto que não vais ter estes problemas. Se por outro lado, queres continuar a usar o Arduino aconselho-te a dares uma vista de olhos a tudo o que é incluído por defeito e tudo o que é configurado por defeito também para entenderes o que se passa.

Assim de repente, tu podes incluir o ficheiro que vais usar com um include, mas a Makefile tem também de ter esse ficheiro (.c e .h) definido. Lá por não estares a incluir, nada te garante que essas bibliotecas não estão incluídas na Makefile do Arduino. Por isso, se não queres surpresas deste tipo, esquece o Arduino e bibliotecas e faz tudo com o avr-gcc.

Boas.
Para programar os PIC usei o MPLAB ou o MicroC.
Já instalei o avr-gcc e à primeira vista parece-me que não vou usar. Sem umas luzes de como funciona será muito complicado.

A minha entrada no Arduino é simplesmente porque estou a ter formação de micro-controladores, ministrado por um individuo que não percebe nada de micro-controladores(nem este nem nenhum outro.) Escolheu dar o Arduino porque, palavras dele, “basta ir à net pesquisar e alterar o código”. Só para terem ideia, passou 1 aula inteira a tentar “fazer” um esquema para conectar e fazer funcionar um LCD 16*2, apenas porque não percebeu que o display tinha de ser conectado aos pinos referidos na programação.(algo que eu respeitei e funcionou na primeira tentativa)

Já fiz alguns projetos com o IDE Arduino, alguns de raiz, outros alterando e juntando exemplos e sketch, mas como em tudo, gosto de saber o porquê de fazer algo de certo modo. Há alguma forma de no IDE Arduino alterar as definições do que ele carrega por defeito? Já procurei e não encontrei.

A minha praia são os PIC, já que tive alguma formação sobre eles.
Para já, e para terminar a formação, vou continuar a usar o IDE Arduino, que com as references do próprio site ajudam bastante a programar. Os erros que der, tento remover as bibliotecas em questão, que embora funcione, não faz sentido.

Agradeço a quem tem tentado esclarecer esta questão que parece ser um defeito do IDE, já que há referência que em IDEs <= a 1.0 o código compila sem problemas(resta saber se nessa versão a biblioteca que dá erro está presente).
Entretanto vou continuar os testes e se chegar a alguma conclusão posto aqui. Para já a solução que encontrei é remover a biblioteca em erro.

http://winavr.sourceforge.net/install_config_WinAVR.pdf

Experimenta pesquisar por ficheiros .h e .c e .cpp nos directórios do Arduino.

A explicação é simples, a biblioteca RobotIRremote tem um arquivo chamado IRremote.h logo, a IDE não sabe qual dos 2 arquivos com nomes iguais você quer usar.

Obrigado a todos. O que encontrei por essa internet fora vai de acordo com as dicas de quem tentou ajudar aqui. Resumindo, o arduino lê todas as bibliotecas existentes na pasta library para "memorizar" as funções que possam ser usadas. Na versão recente do IDE Arduino, foi acrescentada parte da biblioteca IRremote.h que circula por aí. Entre essa biblioteca adicionada nas versões novas e a biblioteca RobotIRremote existem algumas variaveis publicas com o nome igual, o que gera o conflito. Para funcionar, ou se removem/altera as variáveis duplicadas e repetidas, ou se elimina uma das bibliotecas. Eu preferi remover a pasta RobotIRremote e adicionar a biblioteca IRremote completa que circula na internet. Obrigado a todos que ajudaram a perceber esta questão, que existe em vários locais por essa internet fora.