[risolto]problema conflitto libreria IRremote e Newping su Arduino uno ATmega328

Ciao a tutti, ho un problema di conflitto (penso) tra librerie IRremote e Newping su Arduino uno ATmega328. Il mio obbiettivo è quello di far muovere il mio robot in due modalità: la prima, comandata da telecomando IR la seconda, in movimento autonomo evitando gli ostacolo con modulo hc-sr04 si sceglie una piuttosto che l'altra tramite un pulsante. Ecco l'errore che riscontro:

Arduino:1.6.7 (Windows 8.1), Scheda:"Arduino/Genuino Uno"

libraries\IRremote\IRremote.cpp.o: In function `__vector_7':

C:\Program Files (x86)\Arduino\libraries\IRremote/IRremote.cpp:312: multiple definition of `__vector_7'

libraries\NewPing\NewPing.cpp.o:C:\Program Files (x86)\Arduino\libraries\NewPing/NewPing.cpp:214: first defined here

collect2.exe: error: ld returned 1 exit status

Più di una libreria trovata per "IRremote.h"
Usata: C:\Program Files (x86)\Arduino\libraries\IRremote
Non usata: C:\Program Files (x86)\Arduino\libraries\RobotIRremote
exit status 1
Errore durante la compilazione

Davanti ad una cosa del genere non ce la posso fare da solo. Aiuto! Vi ringrazio in anticipo. Ciao

Marco

Intanto hai anche un problema di 2 librerie IRRemote. Cancella questa, che tanto è solo parziale: C:\Program Files (x86)\Arduino\libraries\RobotIRremote

Purtroppo non c'è soluzione semplice al problema, tutte e due le librerie vogliono usare il timer 2 e questo crea un conflitto nell'assegnazione delle risorse. In pratica le due librerie sono tra loro incompatibili, cosa non rara nel mondo Arduino viste le limitate risorse degli AVR.

Ma sulla IRRemote è possibile cambiare quale timer usa, modificando IRRemoteInt.h C'e' questo pezzo:

#else
 #define IR_USE_TIMER1   // tx = pin 9-10
 //#define IR_USE_TIMER2     // tx = pin 3-11
#endif

A seconda di dove metti quelle // iniziali prima di #define (e togli dall'altro), usi il timer che vuoi. Di default usa il timer2, messo come sopra, usa il timer1

Grazie mille nid69ita, funziona! Ora devo solo fare qualche modifica al resto dello sketch, ma direi che ci siamo!grazie ancora.

Grazie anche ad astrobee che mi ha risposto.

Ciao. Ho il tuo stesso problema ma non riesco a risolverlo e non riesco neanche a cambiare il timer nella libreria IrremoteInt.. Tu che librerie hai usato? Io devo usare quattro sensori ad ultrasuoni e un ricevitore ir per passare dalla modalità automatica a manuale per il progetto maturità ma mi blocca questo conflitto da un mese circa.. mi puoi aiutare per favore? :(

>LucaIale: essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti QUI ([u]spiegando bene quali conoscenze hai di elettronica e di programmazione[/u] ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

ciao Lucalale,
io ho usato nel codice queste librerie:

#include <LiquidCrystal.h>
#include <NewPing.h>
#include <AFMotor.h> 
#include <IRremote.h>

scaricati una libreria IRremote e poi cerca nel pc la cartella.
Dentro la cartella trova il file con nome " IRremoteInt.h " e poi aprilo con “Blocco Note”.
cerca la riga :

#else
 #define IR_USE_TIMER2     // tx = pin 3-11
#endif

e cambiala cosi :

#else
 #define IR_USE_TIMER1   // tx = pin 9-10
 //#define IR_USE_TIMER2     // tx = pin 3-11
#endif

dovrebbe funzionare, A me funziona