Ir e librerie...

Salve a tutti, ho guardato sia qui che in giro su internet diversi listati, ma non riesco a fare funzionare un trasmettitore e ricevitore ir. Praticamente utilizzo la versione 1.6.1 installata da pochissimo e come librerie (IRremote.h, IRremote.ccp, IRremoteInt.h, IRremoteTools.ccp e IRremoteTools.h). mi dice che sono del 10/03/2015, ecco lo sketch:

/*
* IRremote: IRrecvDemo - demonstrates receiving IR codes with IRrecv
* An IR detector/demodulator must be connected to the input RECV_PIN.
* Version 0.1 July, 2009
* Copyright 2009 Ken Shirriff
* http://arcfn.com
*/
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
delay(100);
}

dovrebbe leggere il segnale ir e visualizzare il valore sul monitor seriale.

mentre l'errore che compare:

C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD' was not declared in this scope
int RECV_PIN = TKD; // the pin the IR receiver is connected to
^
Errore durante la compilazione

non capisco quello che devo fare... :o :roll_eyes:

Prova ad aggiungerla alla tua libreria, nel percorso da te indicato "C:\Program Files (x86)\Arduino\libraries".
ho testato il tuo sketch a me funziona.

RobotIRremote.zip (26.8 KB)

Nell'IDE c'e' già una IRRemote (parziale) nella cartella delle librerie fornite con Arduino (non nelle librerie dove hai gli sketch). Vanno in conflitto, togli quella dell'IDE.

Il conflitto l'hanno risolto, io le ho entrambe e lo sketch compila perfettamente. Il problema è che ti manca la libreria IRremote di Ken Shirriff o l'hai installata male, non trovandola il compilatore va a prendere la RobotIRremote che hai nella IDE. Se non l'hai già fatto, devi scaricare la libreria da qui GitHub - Arduino-IRremote/Arduino-IRremote: Infrared remote library for Arduino: send and receive infrared signals with multiple protocols la scompatti, rinomini la cartella solo "IRremote" e accertati di non avere una cartella dentro l'altra... in pratica devi avere una unica cartella con dentro i file .h e .cpp e gli altri file; questa cartella NON la devi mettere nella directory dove hai l'IDE ma qua:
C:\Users\NomeDelTuoPC\Documents\Arduino\libraries
fai tutto questo a IDE chiusa.

Grazie per i consigli, ho fatto tutto cioè aggiornato i file e inseriti sia sull'ide che su user... adesso mi compare l'errore con l'indirizzo diverso:

C:\Users\Fuso\Documents\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope
int RECV_PIN = TKD2; // the pin the IR receiver is connected to
^
Errore durante la compilazione

Mi viene da piangere quando le cosè più facili diventano complicate!!! :sob: :sob:
Ma non posso decidere io in quale cartella deve prendere la libreria o direttamente inserirla nello sketch?
E poi quali file (librerie ) servono per l'infrarossi?? servono tutte (IRremote.h, IRremote.cpp, IRremoteInt.h, IRremoteTools.cpp e IRremoteTools.h ???
Grazie!

Io per semplificare "eliminerei" la cartella RobotIRremote, tanto hai un robot Arduino ?

Prima era TKD adesso TKD2 :astonished:

No, quindi cosa faccio tolgo la cartella RobotIRremote e metto direttamente src?

Allora. Ricapitoliamo.
La libreria RobotIRremote è distribuita con Arduino IDE ed è per Arduino Robot. E' una libreria incompleta.
Quella la devi eliminare.
Da usare è la libreria al link che ha postato @marinaio qualche msg fa. Con quella di shirriff non ho mai avuto problemi ad installarla.

Stai incasinando le cartelle... La libreria di Ken deve essere solo in una directory, quella che hai in documenti. Ce la fai a scrivere i percorsi dove hai le librerie per esteso e postarli qui? Cioè C:\etc.etc.
Puoi fare anche come dice nid, ma se capisci come gestire le cartelle è una cosa che ti ritrovi anche per le prossime...

Scusate, io mi ritrovo due cartelle libraries, e si trovano nei seguenti percorsi:
C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src
C:\Users\Fuso\Documents\Arduino\libraries\RobotIRremote\src
Può essere che una delle due si sia creata con la prima versione 1.0.1?
Preciso che in C:\Users\Fuso\Documents\Arduino\libraries\ non c'era nessuna libreria, c'era solo il file readme e la cartella extras, quindi ho inserito tutta la cartella RobotIRremote ma niente, è comparso l'ultimo errore :

C:\Users\Fuso\Documents\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope
int RECV_PIN = TKD2; // the pin the IR receiver is connected to
^
Errore durante la compilazione

cosa mi consigliate?

Ricapitoliamo...
Nella cartella C:\Program Files (x86)\Arduino\libraries\ ci devono stare solo le librerie di sistema che vengono rilasciate con l'IDE, per cui se te hai aggiunto qualche libreria, devi toglierla... La RobotIRremote che è qui, la puoi anche lasciare.
La cartella C:\Users\Fuso\Documents\Arduino\libraries\ inizialmente è vuota ed è qui che devi mettere le librerie che vuoi aggiungere te, per cui la RobotIRremote che si trova qui l'hai aggiunta te... Toglila e installa al suo posto la libreria che ti ho linkato, seguendo quello che ti ho detto nell'altro post... In pratica ti dorvai trovare con un percorso così fatto:
C:\Users\Fuso\Documents\Arduino\libraries\IRremote\ e qui dentro i file .h, .cpp, etc.

C:\Users\Fuso\Documents\Arduino\libraries\IRremote\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope
int RECV_PIN = TKD2; // the pin the IR receiver is connected to
^
Errore durante la compilazione

Sempre errore!!! Cavolo ma cosa devo fare?? può essere problema del sistema operativo w7?? è originale ed è un portatile!!!

Ho il tuo stesso sistema operativo, uso la stessa versione di IDE e compilo tranquillamente lo sketch
Questo è il messaggio che ricevo io:
"Lo sketch usa 8.396 byte (26%) dello spazio disponibile per i programmi. Il massimo è 32.256 byte.
Le variabili globali usano 405 byte (19%) di memoria dinamica, lasciando altri 1.643 byte liberi per le variabili locali. Il massimo è 2.048 byte."

Se leggi il tuo messaggio di errore, ti sta dicendo che non trova una dichiarazione nel file "IRremoteTools.cpp"... ecco quest'ultimo file nella libreria di ken shiriff NON C'E' E NON CI DEVE ESSERE! C'è l'hai messo te? Stai facendo talmente tanta confusione che conviene che tu cancelli tutto e riscarichi da capo l'IDE e la libreria...

Grazie!!! MILLE!!!!!! ora funziona!!! in pratica ho tolto "IRremoteTools.cpp" dalla libreria!! bene ora provo a caricare il tutto dentro il 328

Ancora Grazie per l'aiuto, adesso come ricevitore funziona alla grande, ho provato con diversi telecomandi e non da problemi, legge il codice di tutti i pulsanti!! Ma adesso sto trovando problemi con il trasmettitore costruito con arduino, vi allego lo sketch:

#include <IRremote.h>
 
IRsend irsend;
 
void setup() { }
 
void loop() {
  for (int i = 0; i < 3; i++) {
  
    irsend.sendSony(0xa90, 12); // Sony TV power code
    delay(100);
  }
}

L'errore che compare:

Opzioni di compilazione cambiate, ricompilo tutto
txir.cpp.o: In function loop': C:\Program Files (x86)\Arduino/txir.ino:10: undefined reference to IRsend::sendSony(unsigned long, int)'
collect2.exe: error: ld returned 1 exit status
Errore durante la compilazione

:astonished: :astonished:

Questo conferma che hai ancora le cartelle incasinate... Non basta cancellare un file... Ti ripeto ancora... Cancella l'IDE, scaricala di nuovo e mettila nella cartella programmi; nella cartella libraries che hai in
C:\users\fuso\documenti\arduino cancella tutte le librerie, scaricale ex-novo e rimettile lì rinominando la cartella con il nome del file .h (esempio nel caso della libreira IRremote, devi avere una cartella di nome IRremote con al suo interno i file IRremote.h, IRremote.cpp, etc.).
p.s. a me lo sketch compila...

Certo che ha fatto casino. Se manca la parte di trasmissione è perchè INSISTE a non scaricare la libreria che gli hai indicato (che è completa) e invece ha spostato la RobotIrRemote (che è parziale e ha solo la ricezione) dalle librerie dell'IDE a quelle nella cartella sketch e poi ha eliminato il file .cpp come dice in precedenza.
@fuso, fa piacere dare consigli e poi fai quello che vuoi. :smiley:

Ok scusate se non ho capito al volo, adesso riscarico la librerie e le metto dentro C:\users\fuso\documenti\arduino\libraries creando una cartellla per ogni libreria.

il link è questo? GitHub - Arduino-IRremote/Arduino-IRremote: Infrared remote library for Arduino: send and receive infrared signals with multiple protocols