Problema con Tone(). Bloquea la aplicacion ¿?

Hola, muy buenas.

Tengo un problema con la funcion Tone() en este codigo, y no se muy bien que causa el problema.

Lo que hace esta aplicacion es que cuando pulso un boton de un mando a distancia, que reproduzca un sonido por un altavoz.

El problema es que todo lo hace bien, exceptuando que solo lo hace una vez, y se bloquea la app.

Mirar el codigo:

#include <WProgram.h>
#include <NECIRrcv.h>
#define IRPIN 4

NECIRrcv ir(IRPIN);

void setup()
{
Serial.begin(9600);
Serial.println("IR Started");
pinMode(13, OUTPUT);
pinMode(11, OUTPUT);
ir.begin() ;
}

void loop()
{
unsigned long ircode;

while (ir.available()) {

ircode = ir.read();
Serial.print("Codigo DEC IR: ");
Serial.println(ircode,DEC);
if(ircode == 3158568208){
tone(11, 4000, 20);
digitalWrite(13, 1); //Enciende LED si se pulsa la tecla PowerON/OFF del mando.
}
else {

digitalWrite(13, 0); //Apaga el LED si se pulsa cualquier otra tecla.

}
}
}

Un Saludo y gracias! :wink:

¿Nadie sabe nada sobre este problema? ¿a que se debe?.. no entiendo..