Pages: [1]   Go Down
Author Topic: tone() insieme alle librerie Irremote e servo [RISOLTO]  (Read 767 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley

Code:
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:
// 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
« Last Edit: August 31, 2013, 03:40:14 am by Spaceuniversal » Logged

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 112
Posts: 7077
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tiro a indovinare.
Nello sketch hai incluso anche IRremoteint.h?
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si.
ecco il codice completo:
Code:
// 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:
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
« Last Edit: August 30, 2013, 04:34:23 pm by Spaceuniversal » Logged

Offline Offline
Sr. Member
****
Karma: 4
Posts: 396
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

http://forum.arduino.cc/index.php?topic=185262.0
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

LUCAAAAA grazie!
Ha funzionato. smiley-draw smiley-draw
Non bisognava includere la libreria <IRremoteint.h>
Prossima volta cerco meglio sul forum..lezione imparata smiley
Logged

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 112
Posts: 7077
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Sr. Member
****
Karma: 4
Posts: 396
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

tu lo avevi gia "percepito" smiley-grin
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
« Last Edit: August 31, 2013, 04:22:22 am by Spaceuniversal » Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 327
Posts: 22635
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Stranamente la remoteint mi viene inclusa automaticamente quando aggiungo la libreria irremote...
State facendo confusione  smiley-wink
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ù.
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie Leo..quando l'ho aperto ho visto infatti.
« Last Edit: August 31, 2013, 03:52:51 am by Spaceuniversal » Logged

Offline Offline
Sr. Member
****
Karma: 4
Posts: 396
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma che figata quell'articolo che hai messo del motore musicale spaceuniversal ahaha smiley-grin
io ho fatto le musichette con la scintilla della candela invece smiley-grin
Logged

Pages: [1]   Go Up
Jump to: