Buen dìa Colegas, mucho tiempo sin trabajar con arduinos y hoy me he topado con un problema que no puedo resolver y quiero ver si alquien me puede ayudar
tengo el siguiente còdigo el cual al intentar hacerlo con la interrupciòn externa no reproduce sonido alguno y en el monitor serial tarda pero si se ve el incremento de los números... alguien me podria ayudar por favor para ver que esta mal en el código y como corregir ya que al compilar no me marca error alguno.
#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 tocar()
{
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[h];
playDTMF1(h, noteDuration);
int pauseBetweenNotes = noteDuration * 1;
delay(pauseBetweenNotes);
}
}
else
{
for(h = 0; h < 81; h ++)
{
int noteDuration = noteDurations1[h];
playDTMF1(h, noteDuration);
int pauseBetweenNotes = noteDuration * 1;
delay(pauseBetweenNotes);
}
delay(100);
for(i = 0; i < 68; i ++)
{
int noteDuration = noteDurations[i];
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 setup(){
attachInterrupt(0, tocar, RISING);
}
void loop()
{
}
de igual manera les doy las librerias que estoy utilizando
Muchas gracias
Tone.cpp (11.4 KB)
Tone.h (3.23 KB)