Pages: [1] 2   Go Down
Author Topic: La funzione "Tone" va in conflitto con la libreria di ken Sheriff  (Read 1203 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ragazzi ho riscontato un problema, quando compilo questo sketch:
Code:
#include <IRremote.h>
IRrecv ric(5);
decode_results risultato;
const int buzzer= 10;
#define t1 551520375 // codice tasto 1
#define t2 551504055
#define t3 551536695
#define t4 551495895
#define t5 551528535
#define t6 551512215
#define t7 551544855
#define t8 551491815
#define t9 551524455
void setup ()
{
  pinMode (buzzer, OUTPUT);
  ric.enableIRIn();
}
void loop ()
{
  switch (ric.decode(&risultato))
  {
    case t1: tone(buzzer, 500);delay (200); noTone (buzzer);break;
    case t2: tone(buzzer, 600);delay (200); noTone (buzzer);break;
    case t3: tone(buzzer, 700);delay (200); noTone (buzzer);break;
    case t4: tone(buzzer, 800);delay (200); noTone (buzzer);break;
    case t5: tone(buzzer, 900);delay (200); noTone (buzzer);break;
    case t6: tone(buzzer, 1000);delay (200); noTone (buzzer);break;
    case t7: tone(buzzer, 1100);delay (200); noTone (buzzer);break;
    case t8: tone(buzzer, 1200);delay (200); noTone (buzzer);break;
    case t9: tone(buzzer, 1300);delay (200); noTone (buzzer);break;
    default:;
  }
}
Mi da errore dicendo che c'è una multipla definizione di Tone da quanto ho capito :
core.a(Tone.cpp.o): In function `__vector_7':
C:\Users\Salvatore\Desktop\arduino-1.0.1\hardware\arduino\cores\arduino/Tone.cpp:523: multiple definition of `__vector_7'
IRremote\IRremote.cpp.o:C:\Users\Salvatore\Desktop\arduino-1.0.1\libraries\IRremote/IRremote.cpp:311: first defined here
 Anche perchè quando tolgo la parte dello switch non mi da errore nella compilazione.
C'è un modo quindi per usare sia tone che la libreria IRremote?
Per il mio progetto devo usare sia il ricevitore IR sia il buzzer :\
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Significa che entrambe le librerie stanno utilizzando lo stesso timer. Quindi così come sono, sono incompatibili fra loro.
Logged


Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Esiste una libreria alternativa a quella di Sheriff?
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Possibile che nessuno lo sa?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Invece della Tone puoi pilotare tu stesso i registri di un timer e fargli generare la frequenza che vuoi. Così non disturbi l'IRremote.
Logged


Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

di un timer O.o? quella funzione mi serve a far suonare il buzzer
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E con cosa tu pensi la Tone lo faccia suonare il tuo buzzer?  smiley-razz

Comunque ho guardato il codice della IRremote ed ho visto che puoi cambiare timer.
Modifica il file IRremoteInt.h ed inverti commenti che trovi alle righe 66 e 67 (quelle relative all'Arduino Duemilanove, Diecimila ecc..) così da spostare la IRremote sul timer 1.
Logged


Offline Offline
Sr. Member
****
Karma: 0
Posts: 423
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie mille con questo ho risolto ^^
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ciao io ho lo stesso problema ma non riesco a scpostare la libreria del ir....cm devo fare????? grazie mille smiley
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

???
Logged


Varese
Offline Offline
Full Member
***
Karma: 2
Posts: 206
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Anch'io ho questo problema, voglio fare una pianola comandata con il telecomando della tv. Ma ricevo quest errore.
Qualcuno è riuscito a risolvere?
Come posso generare suoni senza la funzione tone()?
Logged

Arduino UNO starter kit.

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se dovete cambiare timer, la soluzione l'avevo già data:
Comunque ho guardato il codice della IRremote ed ho visto che puoi cambiare timer.
Modifica il file IRremoteInt.h ed inverti commenti che trovi alle righe 66 e 67 (quelle relative all'Arduino Duemilanove, Diecimila ecc..) così da spostare la IRremote sul timer 1.
Logged


Varese
Offline Offline
Full Member
***
Karma: 2
Posts: 206
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ok, quindi basta che invertire i commenti e poi per trasmettere uso il pin 9?
Code:
// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, etc
#else
  //#define IR_USE_TIMER1   // tx = pin 9
  #define IR_USE_TIMER2     // tx = pin 3
#endif
Logged

Arduino UNO starter kit.

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

I commenti sono chiari  smiley-wink
Logged


Varese
Offline Offline
Full Member
***
Karma: 2
Posts: 206
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie a tutti, funziona!  smiley
Logged

Arduino UNO starter kit.

Pages: [1] 2   Go Up
Jump to: