TONE library and External interrupt code collision

Hi guys, good day

Sorry a long tiem without working with arduino, and now i'm stuck on one big problem, i need your help. I'm making this project, with external interrupt to generate super mario bros sound, but it doesn't make any sound. someone can help me??

the code is:

/
#include <Tone.h>
#include <EEPROM.h>

Tone freq1;
Tone freq2;
const int DTMF_freq1[] = { NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, 0, NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_C4, 0, NOTE_DS4, 0, NOTE_D4, 0, NOTE_GS3, 0, NOTE_G3, 0, NOTE_CS4, 0, NOTE_C4, NOTE_FS4, NOTE_F4, NOTE_E4, NOTE_AS4, NOTE_A4, NOTE_GS4, 0, NOTE_DS4, 0, NOTE_B3, 0, NOTE_AS3, 0, NOTE_A3, 0, NOTE_GS3, 0 };
const int DTMF_freq2[] = { NOTE_C3, NOTE_C4, NOTE_A2, NOTE_A3, NOTE_AS2, NOTE_AS3, 0, 0, 0, NOTE_C3, NOTE_C4, NOTE_A2, NOTE_A3, NOTE_AS2, NOTE_AS3, 0, 0, 0, NOTE_F2, NOTE_F3, NOTE_D2, NOTE_D3, NOTE_DS2, NOTE_DS3, 0, 0, 0, NOTE_F2, NOTE_F3, NOTE_D2, NOTE_D3, NOTE_DS2, NOTE_DS3, 0, 0, NOTE_DS3, NOTE_D3, NOTE_CS3, NOTE_C3, 0, NOTE_DS3, 0, NOTE_D3, 0, NOTE_GS2, 0, NOTE_G2, 0, NOTE_CS3, 0, NOTE_C3, NOTE_FS3, NOTE_F3, NOTE_E3, NOTE_AS3, NOTE_A3, NOTE_GS3, 0, NOTE_DS3, 0, NOTE_B2, 0, NOTE_AS2, 0, NOTE_A2, 0, NOTE_GS2, 0 };
const int DTMF_freq3[] = { NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0, NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0, NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0};
const int DTMF_freq4[] = { NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0, NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0, NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0};
int noteDurations[] = {166, 166, 166, 166, 166, 166, 300, 300, 300, 166, 166, 166, 166, 166, 166, 300, 300, 300, 166, 166, 166, 166, 166, 166, 300, 300, 300, 166, 166, 166, 166, 166, 166, 100, 100, 112, 112, 112, 112, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 107, 107, 107, 107, 107, 107, 107, 50, 150, 50, 150, 50, 150, 50, 150, 50, 150};
int noteDurations1[] = { 8, 16, 13, 2, 10, 3, 3, 8, 16, 13, 2, 9, 5, 2, 3, 9, 1, 4, 1, 2, 6, 10, 1, 8, 5, 7, 86, 8, 16, 13, 2, 10, 3, 3, 8, 16, 13, 2, 9, 5, 2, 3, 9, 1, 4, 1, 2, 6, 10, 1, 8, 5, 7, 86, 8, 16, 13, 2, 10, 3, 3, 8, 16, 13, 2, 9, 5, 2, 3, 9, 1, 4, 1, 2, 6, 10, 1, 8, 5, 7, 86};

void boton()
{

freq1.begin(11);
freq2.begin(12);
int i;
int h;
int j;
int address = 0;

Serial.begin(9600);

j = EEPROM.read(address);
j = j + 1;

EEPROM.write(address, j);
Serial.println(j);
if (j < 10){

for(h = 0; h < 81; h ++)
{
int noteDuration = noteDurations1;
playDTMF1(h, noteDuration);
int pauseBetweenNotes = noteDuration * 1;
delay(pauseBetweenNotes);
}
}
else
{
detachInterrupt(0);
for(h = 0; h < 81; h ++)
{
int noteDuration = noteDurations1;
playDTMF1(h, noteDuration);
int pauseBetweenNotes = noteDuration * 1;
delay(pauseBetweenNotes);
}

delay(100);

for(i = 0; i < 68; i ++)
{
int noteDuration = noteDurations*;
playDTMF(i, noteDuration);
_ int pauseBetweenNotes = noteDuration * 1;_
delay(pauseBetweenNotes);
}

EEPROM.write(address, 0);
attachInterrupt(0, boton, RISING);
}


}
void playDTMF(uint8_t number, long duration)
{
freq1.play(DTMF_freq1[number], duration);
freq2.play(DTMF_freq2[number], duration);
}
void playDTMF1(uint8_t number, long duration)
{
freq1.play(DTMF_freq3[number], duration);
freq2.play(DTMF_freq4[number], duration);
}
void setup() {
attachInterrupt(0, boton, RISING);
}
void loop()
{
while (true);
}[/quote]
i see that the interrupt use the uint_8t and the TONE library too, how can i solve it? what i need to change, add or erase in the code. When i compile the software don't send me any error or warning.
I attach the tone library
Tone.cpp (11.5 KB)
Tone.h (3.23 KB)*

#include <Tone.h>
#include <EEPROM.h>

Tone freq1;
Tone freq2;

const int DTMF_freq1[] = { NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, 0, NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_C4, 0, NOTE_DS4, 0, NOTE_D4, 0, NOTE_GS3, 0, NOTE_G3, 0, NOTE_CS4, 0, NOTE_C4, NOTE_FS4, NOTE_F4, NOTE_E4, NOTE_AS4, NOTE_A4, NOTE_GS4, 0, NOTE_DS4, 0, NOTE_B3, 0, NOTE_AS3, 0, NOTE_A3, 0, NOTE_GS3, 0 };
const int DTMF_freq2[] = { NOTE_C3, NOTE_C4, NOTE_A2, NOTE_A3, NOTE_AS2, NOTE_AS3, 0, 0, 0, NOTE_C3, NOTE_C4, NOTE_A2, NOTE_A3, NOTE_AS2, NOTE_AS3, 0, 0, 0, NOTE_F2, NOTE_F3, NOTE_D2, NOTE_D3, NOTE_DS2, NOTE_DS3, 0, 0, 0, NOTE_F2, NOTE_F3, NOTE_D2, NOTE_D3, NOTE_DS2, NOTE_DS3, 0, 0, NOTE_DS3, NOTE_D3, NOTE_CS3, NOTE_C3, 0, NOTE_DS3, 0, NOTE_D3, 0, NOTE_GS2, 0, NOTE_G2, 0, NOTE_CS3, 0, NOTE_C3, NOTE_FS3, NOTE_F3, NOTE_E3, NOTE_AS3, NOTE_A3, NOTE_GS3, 0, NOTE_DS3, 0, NOTE_B2, 0, NOTE_AS2, 0, NOTE_A2, 0, NOTE_GS2, 0 };
const int DTMF_freq3[] = { NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0, NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0, NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0};
const int DTMF_freq4[] = { NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0, NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0, NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0};

int noteDurations[] = {166, 166, 166, 166, 166, 166, 300, 300, 300, 166, 166, 166, 166, 166, 166, 300, 300, 300, 166, 166, 166, 166, 166, 166, 300, 300, 300, 166, 166, 166, 166, 166, 166, 100, 100, 112, 112, 112, 112, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 107, 107, 107, 107, 107, 107, 107, 50, 150, 50, 150, 50, 150, 50, 150, 50, 150};
int noteDurations1[] = { 8, 16, 13, 2, 10, 3, 3, 8, 16, 13, 2, 9, 5, 2, 3, 9, 1, 4, 1, 2, 6, 10, 1, 8, 5, 7, 86, 8, 16, 13, 2, 10, 3, 3, 8, 16, 13, 2, 9, 5, 2, 3, 9, 1, 4, 1, 2, 6, 10, 1, 8, 5, 7, 86, 8, 16, 13, 2, 10, 3, 3, 8, 16, 13, 2, 9, 5, 2, 3, 9, 1, 4, 1, 2, 6, 10, 1, 8, 5, 7, 86};

#include <stdint.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>

void setup()
{

freq1.begin(11);
freq2.begin(12);
int address = 0;
Serial.begin(9600);

int i;
int h;
int j;

j = EEPROM.read(address);
j=j+1;
EEPROM.write(address, j);
Serial.print(j);

if (j < 10){

for(h = 0; h < 81; h ++)
{
int noteDuration = noteDurations1;
playDTMF1(h, noteDuration);
int pauseBetweenNotes = noteDuration * 1;
delay(pauseBetweenNotes);
}
}
else
{
for(h = 0; h < 81; h ++)
{
int noteDuration = noteDurations1;
playDTMF1(h, noteDuration);
int pauseBetweenNotes = noteDuration * 1;
delay(pauseBetweenNotes);
}

delay(100);

for(i = 0; i < 68; i ++)
{
int noteDuration = noteDurations*;
playDTMF(i, noteDuration);
_ int pauseBetweenNotes = noteDuration * 1;_
delay(pauseBetweenNotes);
}

EEPROM.write(address, 0);
}
}
void playDTMF(uint8_t number, long duration)
{
freq1.play(DTMF_freq1[number], duration);
freq2.play(DTMF_freq2[number], duration);
}
void playDTMF1(uint8_t number, long duration)
{
freq1.play(DTMF_freq3[number], duration);
freq2.play(DTMF_freq4[number], duration);
}
void loop()
{
attachInterrupt(0, setup, RISING);
}*
i use this code and it send me the number but never play the sound

DarkTemplar:
Hi guys, good day

Sorry a long tiem without working with arduino, and now i'm stuck on one big problem, i need your help. I'm making this project, with external interrupt to generate super mario bros sound, but it doesn't make any sound. someone can help me??

i see that the interrupt use the uint_8t and the TONE library too, how can i solve it? what i need to change, add or erase in the code. When i compile the software don't send me any error or warning.

I attach the tone library

If you have a timer conflict, just use a different library that doesn't use the same timer. The tone library uses timer 2. So, use a library that uses timer 1 instead. I created two libraries that do just this:

NewTone - Plug-in replacement for the tone library, uses timer 1, much smaller and faster.
toneAC - Twice as loud, ability to control volume, uses timer 1, must use two specific pins.

I also have a 3rd library that would work that doesn't use any timers at all. This is useful if you have a project that both uses timer 1 and timer 2 but you still want to play sound. That library can be found here:

TimerFreeTone - Doesn't use timers at all, but in blocked mode (can't do other things while the tone is being played).

Between these 3, you should find something that works. All have example sketches that show working examples. I even have a 4th audio library called toneAC2 that works similar to toneAC but uses timer 2. That won't work for you, as your conflict is with timer 2. Yes, I do have a lot of audio libraries :wink:

Tim

Thank for tour answer teckel, one more question, the toneAC library can playa 2 different tones at the sale time, like the library i used?

DarkTemplar:
Thank for tour answer teckel, one more question, the toneAC library can playa 2 different tones at the sale time, like the library i used?

toneAC plays one tone but uses two SPECIFIC pins to do it. It does this in a push/pull manor which creates a high sound volume level (and allows you to control the volume). If you want to play two notes at once, you could probably use toneAC and toneAC2. I've never tried it but as they use different timers and toneAC2 can use different pins they should work just fine together. You'll use both timer 1 and timer 2 in the process. But, to play multiple tones at the same time you probably will used multiple timers.

I also have a tone generator library that doesn't use timers at all, TimerFreeTone. It runs in blocking mode (doesn't return the the code till the tone is complete). So, it doesn't work well if you're trying to play music. But if you just want to play two tones at once and only use one timer, you can use toneAC and TimerFreeTone together as well.

Lots of options, all depending on your needs.

Tim

thanks teckel

i make some changes on my orignal program, now the arduino reproduce the sound but the new issue is than it only reproduce once, the second time i try it reproduce a weird souns the third no sound..... any idea of the reason that it happening this... if u putthe program on arduino uno board and see the monitor u can see that the conter in the interrupt and other ones continue increment or reseting, depending the case

#include <Tone.h>
#include <EEPROM.h>

#include <stdint.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/pgmspace.h>
int a;
int b;

Tone freq1;
Tone freq2;
const int DTMF_freq1[] = { NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, 0, NOTE_C4, NOTE_C5, NOTE_A3, NOTE_A4, NOTE_AS3, NOTE_AS4, 0, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, 0, NOTE_F3, NOTE_F4, NOTE_D3, NOTE_D4, NOTE_DS3, NOTE_DS4, 0, 0, NOTE_DS4, NOTE_D4, NOTE_CS4, NOTE_C4, 0, NOTE_DS4, 0, NOTE_D4, 0, NOTE_GS3, 0, NOTE_G3, 0, NOTE_CS4, 0, NOTE_C4, NOTE_FS4, NOTE_F4, NOTE_E4, NOTE_AS4, NOTE_A4, NOTE_GS4, 0, NOTE_DS4, 0, NOTE_B3, 0, NOTE_AS3, 0, NOTE_A3, 0, NOTE_GS3, 0 };
const int DTMF_freq2[] = { NOTE_C3, NOTE_C4, NOTE_A2, NOTE_A3, NOTE_AS2, NOTE_AS3, 0, 0, 0, NOTE_C3, NOTE_C4, NOTE_A2, NOTE_A3, NOTE_AS2, NOTE_AS3, 0, 0, 0, NOTE_F2, NOTE_F3, NOTE_D2, NOTE_D3, NOTE_DS2, NOTE_DS3, 0, 0, 0, NOTE_F2, NOTE_F3, NOTE_D2, NOTE_D3, NOTE_DS2, NOTE_DS3, 0, 0, NOTE_DS3, NOTE_D3, NOTE_CS3, NOTE_C3, 0, NOTE_DS3, 0, NOTE_D3, 0, NOTE_GS2, 0, NOTE_G2, 0, NOTE_CS3, 0, NOTE_C3, NOTE_FS3, NOTE_F3, NOTE_E3, NOTE_AS3, NOTE_A3, NOTE_GS3, 0, NOTE_DS3, 0, NOTE_B2, 0, NOTE_AS2, 0, NOTE_A2, 0, NOTE_GS2, 0 };
const int DTMF_freq3[] = { NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0, NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0, NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0};
const int DTMF_freq4[] = { NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0, NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0, NOTE_E3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_D3, NOTE_CS2, NOTE_A3, NOTE_A5, NOTE_D5, NOTE_D4, NOTE_G4, NOTE_GS3, NOTE_G3, NOTE_CS4, NOTE_C4, NOTE_CS3, NOTE_C3, NOTE_B2, NOTE_A2, NOTE_GS2, NOTE_E2, NOTE_B2, NOTE_AS2, NOTE_G2, 0};
int noteDurations[] = {166, 166, 166, 166, 166, 166, 300, 300, 300, 166, 166, 166, 166, 166, 166, 300, 300, 300, 166, 166, 166, 166, 166, 166, 300, 300, 300, 166, 166, 166, 166, 166, 166, 100, 100, 112, 112, 112, 112, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 107, 107, 107, 107, 107, 107, 107, 50, 150, 50, 150, 50, 150, 50, 150, 50, 150};
int noteDurations1[] = { 8, 16, 13, 2, 10, 3, 3, 8, 16, 13, 2, 9, 5, 2, 3, 9, 1, 4, 1, 2, 6, 10, 1, 8, 5, 7, 86, 8, 16, 13, 2, 10, 3, 3, 8, 16, 13, 2, 9, 5, 2, 3, 9, 1, 4, 1, 2, 6, 10, 1, 8, 5, 7, 86, 8, 16, 13, 2, 10, 3, 3, 8, 16, 13, 2, 9, 5, 2, 3, 9, 1, 4, 1, 2, 6, 10, 1, 8, 5, 7, 86};

void aumento(){
b = 1;
}

void setup(){
Serial.begin(9600);
attachInterrupt(0, aumento, RISING);
b = 0;
Serial.println(b);

}

void loop(){

if (b == 1){
detachInterrupt(0);
Serial.println(b);
Serial.println("si se pudo");
b = 0;
Serial.println(b);

freq1.begin(11);
freq2.begin(12);
int i = 0;
int h = 0;
int j;

j = EEPROM.read(1);
j = j + 1;

EEPROM.write(1, j);
Serial.print(j);
Serial.print(" moneda");
Serial.println('\n');

if (j < 10){

for(h = 0; h < 81; h ++)
{
int noteDuration = noteDurations1;
playDTMF1(h, noteDuration);
int pauseBetweenNotes = noteDuration * 1;
delay(pauseBetweenNotes);
}

}
else
{
// detachInterrupt(0);
for(h = 0; h < 81; h ++)
{
int noteDuration = noteDurations1;
playDTMF1(h, noteDuration);
int pauseBetweenNotes = noteDuration * 1;
delay(pauseBetweenNotes);
}

delay(100);

for(i = 0; i < 68; i ++)
{
int noteDuration = noteDurations*;
playDTMF(i, noteDuration);
_ int pauseBetweenNotes = noteDuration * 1;_
delay(pauseBetweenNotes);
}

EEPROM.write(1, 0);
}


delay(100);
EIFR = 1;
attachInterrupt(0, aumento, RISING);
}
}
void playDTMF(uint8_t number, long duration)
{
freq1.play(DTMF_freq1[number], duration);
freq2.play(DTMF_freq2[number], duration);
}
void playDTMF1(uint8_t number, long duration)
{
freq1.play(DTMF_freq3[number], duration);
freq2.play(DTMF_freq4[number], duration);
}[/quote]*