Arduino Forum

International => Italiano => Software => Topic started by: Spaceuniversal on Aug 30, 2013, 08:01 pm

Title: tone() insieme alle librerie Irremote e servo [RISOLTO]
Post by: Spaceuniversal on Aug 30, 2013, 08:01 pm
Sto cercando di far funzionare insieme un cicalino, un servo e un sensore ir che attiva esso.
siccome penso stiano usando lo stesso timer, volevo capire intanto se è fattibile utilizzarli tutti insieme modificando da IRremoteint.h  l'assegnazione dei timer ma non ho ben compreso come..

Per ora ho assegnato:

servo su pin 9
cicalino su pin 8
e sensore ir su pin 11

e gli errori  di compilazioni sono a gogo :)

Code: [Select]

IRremote\IRremote.cpp.o: In function `MATCH(int, int)':
/IRremoteInt.h:179: multiple definition of `MATCH(int, int)'
ScattoIRSound.cpp.o:C:\Program Files (x86)\Arduino\libraries\IRremote/IRremoteInt.h:179: first defined here
IRremote\IRremote.cpp.o: In function `MATCH_MARK(int, int)':
/IRremoteInt.h:180: multiple definition of `MATCH_MARK(int, int)'
ScattoIRSound.cpp.o:C:\Program Files (x86)\Arduino\libraries\IRremote/IRremoteInt.h:180: first defined here
IRremote\IRremote.cpp.o: In function `MATCH_SPACE(int, int)':
/IRremoteInt.h:181: multiple definition of `MATCH_SPACE(int, int)'
ScattoIRSound.cpp.o:C:\Program Files (x86)\Arduino\libraries\IRremote/IRremoteInt.h:181: first defined here
core.a(Tone.cpp.o): In function `__vector_7':
C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Tone.cpp:535: multiple definition of `__vector_7'
IRremote\IRremote.cpp.o:C:\Program Files (x86)\Arduino\libraries\IRremote/IRremote.cpp:311: first defined here




sulla libreria Irremoteint.h trovo questo:
Code: [Select]
// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
#else
 //#define IR_USE_TIMER1   // tx = pin 9
 #define IR_USE_TIMER2     // tx = pin 3
#endif


grazie intanto
Title: Re: tone() insieme alle librerie Irremote e servo
Post by: PaoloP on Aug 30, 2013, 11:10 pm
Tiro a indovinare.
Nello sketch hai incluso anche IRremoteint.h?
Title: Re: tone() insieme alle librerie Irremote e servo
Post by: Spaceuniversal on Aug 30, 2013, 11:20 pm
si.
ecco il codice completo:
Code: [Select]

// LIBRERIE

#include <Servo.h>
#include <IRremote.h>
#include <IRremoteInt.h>

// DICHIARAZIONI
int freq = 1047;
int pinbuzz = 8;

int RECV_PIN = 11; // ricevitore IR
IRrecv irrecv(RECV_PIN);
decode_results results;

Servo ServoMc;
int zero = 60; //posizione  1°
int media = 90; //posizione 2° finale

int pause=200;
int scatto=737;


void setup()
{
ServoMc.attach(9);
Serial.begin(9600);
 irrecv.enableIRIn(); // Start the receiver
}

void loop()
{
 if (irrecv.decode(&results)) {
  Serial.println(results.value,DEC);
  irrecv.resume(); // Ricevi prossimo valore
   
if (results.value == 52122){
 ServoMc.write(zero);
 delay(scatto);
  ServoMc.write(media);
  delay(scatto);
  tone(pinbuzz, freq);
 
   irrecv.resume(); // Receive the next value



Vedo ora che anche se cancello tone() il codice da errore lo stesso

precisamente cosi':
Code: [Select]

IRremote\IRremote.cpp.o: In function `MATCH(int, int)':
/IRremoteInt.h:179: multiple definition of `MATCH(int, int)'
ScattoIRSound.cpp.o:C:\Program Files (x86)\Arduino\libraries\IRremote/IRremoteInt.h:179: first defined here
IRremote\IRremote.cpp.o: In function `MATCH_MARK(int, int)':
/IRremoteInt.h:180: multiple definition of `MATCH_MARK(int, int)'
ScattoIRSound.cpp.o:C:\Program Files (x86)\Arduino\libraries\IRremote/IRremoteInt.h:180: first defined here
IRremote\IRremote.cpp.o: In function `MATCH_SPACE(int, int)':
/IRremoteInt.h:181: multiple definition of `MATCH_SPACE(int, int)'
ScattoIRSound.cpp.o:C:\Program Files (x86)\Arduino\libraries\IRremote/IRremoteInt.h:181: first defined here
Title: Re: tone() insieme alle librerie Irremote e servo
Post by: lucaleo on Aug 30, 2013, 11:42 pm
http://forum.arduino.cc/index.php?topic=185262.0
Title: Re: tone() insieme alle librerie Irremote e servo
Post by: Spaceuniversal on Aug 31, 2013, 12:19 am
LUCAAAAA grazie!
Ha funzionato. :% :%
Non bisognava includere la libreria <IRremoteint.h>
Prossima volta cerco meglio sul forum..lezione imparata :)
Title: Re: tone() insieme alle librerie Irremote e servo
Post by: PaoloP on Aug 31, 2013, 12:20 am
Esatto Luca, includendo la IRremoteint che è già inclusa nella IRremote, la doppia inclusione genera errori.
Title: Re: tone() insieme alle librerie Irremote e servo
Post by: lucaleo on Aug 31, 2013, 12:22 am

Esatto Luca, includendo la IRremoteint che è già inclusa nella IRremote, la doppia inclusione genera errori.


tu lo avevi gia "percepito" :D
Title: Re: tone() insieme alle librerie Irremote e servo (RISOLTO)
Post by: Spaceuniversal on Aug 31, 2013, 12:26 am
Stranamente la remoteint mi viene inclusa automaticamente quando aggiungo la libreria irremote...
Grazie Paolo!
OT: per ringraziarvi segnalo questa beta di  simulatore di galleria del vento di Autodesk gratuito fino a fine anno
http://labs.autodesk.com/utilities/falcon

Innovativo e semplice da usare con profili propri.

METODO ALTERNATIVO senza la funzione tone() :

Successivamente all'euforia mi sono accorto all'atto pratico che comunque persiste un conflitto in quanto se si è nella condizione di usare insieme servomotori,funzioni tone() e altro che utilizza stessi timer di almeno uno dei due ,come ad esempio IRremote si è sempre in conflitto in un modo e nell'altro.. (almeno che non si usi arduino mega e si assegni il timer5 a IRremote che sembra funzionare)

Ho trovato questo codice che permette di usare l'altoparlante producendo melodie senza la funzione tone()
link: http://letsmakerobots.com/node/34477

in quest'esempio viene utilizzato un motore dc per produrre suono grazie alle proprietà dei magneti interni che tutti i dc possiedono
Il magnete permanente è nel corpo, l'elettromagnete è sul rotore. Il driver del motore (ponte"H" ) fa da amplificatore.

Il vantaggio è che lascia appunto il timer2 libero da usare per altri scopi.
Riadattandolo al mio caso ha funzionato pefettamente!
Title: Re: tone() insieme alle librerie Irremote e servo (RISOLTO)
Post by: leo72 on Aug 31, 2013, 10:49 am

Stranamente la remoteint mi viene inclusa automaticamente quando aggiungo la libreria irremote...

State facendo confusione  ;)
La IRremoteInt non è una libreria aggiuntiva, ma è un sempice file .h che appartiene alla IRremote.
Quel file contiene il setup del timer da usare, nulla più.
Title: Re: tone() insieme alle librerie Irremote e servo [RISOLTO]
Post by: Spaceuniversal on Aug 31, 2013, 10:51 am
Grazie Leo..quando l'ho aperto ho visto infatti.
Title: Re: tone() insieme alle librerie Irremote e servo [RISOLTO]
Post by: lucaleo on Aug 31, 2013, 10:55 am
ma che figata quell'articolo che hai messo del motore musicale spaceuniversal ahaha :D
io ho fatto le musichette con la scintilla della candela invece :D