Arduino e librerie

Ciao , sono nuovo del forum , Stavo facendo un programma con arduino , per fare una prova su dei componenti che ho qua ed arduino per poi un progetto piu grandini . Fisicamente ricevitore ir , telecomando , buzzer , contatto reed . Questo programma fa scattare l'allarme quando il magnete è staccato dal conttato reed , quando il contatto reed ha di nuovo il magnete si può spegnere spegnere il buzzer da telecomando .
Codice

#include <IRremote.h>


int buzzer = 7;
int RECV_PIN = 11;
int reed = 8;
int allarme = 0;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
 
  pinMode(reed,INPUT);
  pinMode(buzzer,OUTPUT);

  Serial.begin(9600);
  irrecv.enableIRIn(); //Avvio ricevitore
}

void loop(){
  if (digitalRead(reed == HIGH)) {
  Serial.print("sicuro");
  }
  else if (digitalRead(reed == LOW)){
  allarme = 1;
  }
  if (allarme == 1){
  tone(buzzer,3100,500);
  delay(200);
  tone(buzzer,3400,500);
  delay(200);
  }
  
  if (irrecv.decode(&results)) {
  if (results.value==0xFFA25D) { 
   allarme = 0;
    }
  delay(100);
}
  irrecv.resume();
}

Quando lo compilo mi da questo strano errore le librerie di IRremote

Arduino:1.8.1 (Windows 7), Scheda:"Arduino/Genuino Uno"

Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':

(.text+0x0): multiple definition of `__vector_7'

libraries\Arduino-IRremote-master\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

Più di una libreria trovata per "IRremote.h"
Usata: C:\Users\shinra\Documents\Arduino\libraries\Arduino-IRremote-master
Non usata: C:\Program Files (x86)\Arduino\libraries\Arduino-IRremote-master
exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Uno.

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"

Buonasera e benvenuto sul forum,
essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

... dopo di che ... sembrerebbe che hai messo la libreria in più punti e questo NON va bene ... elimina quella che hai messo in C:\Program Files (x86)\Arduino\libraries\Arduino-IRremote-master e lascia solo quella nella tua cartella.

Verifica se la cosa si risolve o appaiono altri messaggi di errore.

Guglielmo

Avevo gia fatto questa operazione , mi da un altro errore

Arduino:1.8.1 (Windows 7), Scheda:"Arduino/Genuino Uno"

In file included from C:\Users\shinra\Documents\Arduino\libraries\Arduino-IRremote-master\ir_Lego_PF.cpp:3:0:

C:\Users\shinra\Documents\Arduino\libraries\Arduino-IRremote-master\ir_Lego_PF_BitStreamEncoder.h: In member function 'int LegoPfBitStreamEncoder::getRepeatStopPause() const':

C:\Users\shinra\Documents\Arduino\libraries\Arduino-IRremote-master\ir_Lego_PF_BitStreamEncoder.h:107:38: warning: integer overflow in expression [-Woverflow]

       return STOP_PAUSE_DURATION + 5 * MAX_MESSAGE_LENGTH - messageLength;

                                      ^

Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':

(.text+0x0): multiple definition of `__vector_7'

libraries\Arduino-IRremote-master\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

Più di una libreria trovata per "IRremote.h"
Usata: C:\Users\shinra\Documents\Arduino\libraries\Arduino-IRremote-master
Non usata: C:\Program Files (x86)\Arduino\libraries\Arduino-IRremote-master
exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Uno.

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"

... se lo hai fatto perché continua a dire:

Più di una libreria trovata per "IRremote.h"
Usata: **C:\Users\shinra\Documents\Arduino\libraries**Arduino-IRremote-master
Non usata: **C:\Program Files (x86)\Arduino\libraries**Arduino-IRremote-master

... mi sembra che le trovi entrambe !

Guglielmo

Si , è una cosa molto strana

... fai anche un'altra cosa ... spesso la IRremote va anche in conflitto con una delle librerie standard di Arduno, quella per il "robot".

Vai in C:\Program Files (x86)\Arduino\libraries\ e togli la cartella "RobotIRremote" (... salvatela da qualche parte ... dovesse mai servirti) ... vedi se migliora ...

Guglielmo

La avevo gia tolta quando lo ho provato per la prima volta , perchè andava in confflitto .

... ok, allora fai una bella ricerca perché il compilatore continua dirti che trova DUE volte la stessa libreria.

Guglielmo

Hai chiuso e riaperto il IDE?
Le aggiunte di librerie lo vede solo alla partenza, forse lo stesso vale anche per librerie cancellate?
Ciao Uwe

+uwefed@uwefed+gpb01@gpb01
Ho riavviato l'IDE ... ogni volta che facevo un operazione anche delle cartelle , ho cercato su internet e non trovo nulla a riguardo

Io do sempre un suggerimento che, oltretutto, permette di avere più versioni che NON interagiscono tra loro ...
... disinstalla tutto, scarica la versione .zip, installala dove vuoi, nella cartella di Arduino crei un cartalle di nome "portable" ... in questo modo hai creato una versione "sand-boxed" ... tutto (le tue librerie, i core aggiuntivi, ecc.) viene messo li dentro e non va a cercare nulla in giro per il disco !

In questo modo io ho varie versioni e posso fare prove con tutte senza che una disturbi l'altra.

Guglielmo

Sia con la ver. installata , sia con la portable installata da sola da sempre questo errore

Arduino:1.8.1 (Windows 7), Scheda:"Arduino/Genuino Uno"

In file included from C:\Users\shinra\Documents\Arduino\libraries\Arduino-IRremote-master\ir_Lego_PF.cpp:3:0:

C:\Users\shinra\Documents\Arduino\libraries\Arduino-IRremote-master\ir_Lego_PF_BitStreamEncoder.h: In member function 'int LegoPfBitStreamEncoder::getRepeatStopPause() const':

C:\Users\shinra\Documents\Arduino\libraries\Arduino-IRremote-master\ir_Lego_PF_BitStreamEncoder.h:107:38: warning: integer overflow in expression [-Woverflow]

       return STOP_PAUSE_DURATION + 5 * MAX_MESSAGE_LENGTH - messageLength;

                                      ^

Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':

(.text+0x0): multiple definition of `__vector_7'

libraries\Arduino-IRremote-master\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

Più di una libreria trovata per "IRremote.h"
Usata: C:\Users\shinra\Documents\Arduino\libraries\Arduino-IRremote-master
Non usata: C:\Users\shinra\Desktop\arduino-1.8.1\libraries\Arduino-IRremote-master
exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Uno.

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"

Mi fai capire COME installi tu le librerie ? ? ? Perché NON usi il "Library Manager" del IDE così hai sempre le librerie aggiornate e sei sicuro dell'installazione ?

Guglielmo

... ributta TUTTO ... reinstalla ex-novo l'IDE creando la cartella "portable" e installa la IRremore dal "Library Manager" !!!

Guglielmo

Ora siamo tornati all'altro errore

Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':

(.text+0x0): multiple definition of `__vector_7'

libraries\IRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

Più di una libreria trovata per "IRremote.h"
Usata: C:\Users\shinra\Documents\Arduino\libraries\IRremote
Non usata: C:\Users\shinra\Desktop\arduino-1.8.1-windows\arduino-1.8.1\libraries\RobotIRremote
exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Uno.

Ok, questo è giusto ...
... vai in "C:\Users\shinra\Desktop\arduino-1.8.1-windows\arduino-1.8.1\libraries" ed elimina (... non rinomina) la cartella "RobotIRremote" che tanto serve solo per Arduino Robot.

Guglielmo

Ok quello è un problema in meno , peccato ci sia ancora la parte sopra dell'errore

Arduino:1.8.1 (Windows 7), Scheda:"Arduino/Genuino Uno"

Tone.cpp.o (symbol from plugin): In function `timer0_pin_port':

(.text+0x0): multiple definition of `__vector_7'

libraries\IRremote\IRremote.cpp.o (symbol from plugin):(.text+0x0): first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Uno.

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"

Sto usando windows 7 home premiun 64bit

Prima di usare le libreria occorre STUDIARLE e capire le risorse che usano perché, se si usano risorse in conflitto ... si hanno poi problemi.

Il compilatore ti sta chiaramemte dicendo che la Tone.cpp nella funzione `timer0_pin_port' sta andando in conflitto con la IRremote ... che usa lo stesso vettore di interrupt.

Prova ad usare la libreria NewTone (... sperando che sia compatibile con il nuovo IDE) al posto della Tone ... dovrebbe risolvere dato che usa un interrupt differente.

Guglielmo