Diferencia entre revisiones de «tone()»

De ArduWiki
Saltar a: navegación, buscar
(Descripción)
(Ejemplo)
Línea 41: Línea 41:
 
== Ejemplo ==
 
== Ejemplo ==
 
<pre>
 
<pre>
 +
int melodia[] = {262,196,196,220,196,0,247,262};
 +
int duracion[] = {4,8,8,4,4,4,4,4};
 +
 +
void setup() {
 +
  for (byte n=0; n<8; n++) {
 +
    int tiempo = 1000 / duracion[n];
 +
    tone(8, melodia[n], tiempo);
 +
 +
    int pausa = tiempo * 1.30;
 +
    delay (pausa);
 +
    noTone(8);
 +
  }
 +
}
 +
void loop() {
 +
  //Nada
 +
}
 
</pre>
 
</pre>
  

Revisión del 01:25 3 feb 2019

Descripción

Genera en un pin una onda cuadrada de la frecuencia especificada (y ciclo de trabajo del 50%). Se puede especificar una duración, de lo contrario la onda continúa hasta una llamada a noTone().

El pin puede ser conectado a un zumbador piezoeléctrico o a un altavoz para reproducir tonos.

Sólo un tono puede ser generado a la vez. Si un tono ya se está reproduciendo en un pin diferente, la llamada a tono() no tendrá ningún efecto. Si el tono se está reproduciendo en el mismo pin, la llamada ajustará su frecuencia.

Placa Frecuencia Mín. (Hz) Frecuencia Máx (Hz)
UNO, MEGA, Leonardo y otras placas AVR 31 65535
ZERO 41 275000
DUE y Gemma No implementado

Para detalles técnicos ver las notas Brett Hagman's.

Nota: Si desea reproducir tonos diferentes en varios pines, es necesario llamar noTone() en un pin antes de llamar a tone() en el siguiente pin.


Sintaxis

tone(pin, frecuencia);
tone(pin, frecuencia, duracion);

Parámetros

pin
el pin en el que se quiere generar el tono
frecuencia
la frecuencia del tono en hertz - unsigned int
duracion
la duración del tono en milisegundos (opcional) - unsigned long

Retornos

Nada.

Advertencias

  • El uso de la función tone() interferirá con la salida PWM en los pines 3 y 11 (en placas distintas de la MEGA).

Ejemplo

int melodia[] = {262,196,196,220,196,0,247,262};
int duracion[] = {4,8,8,4,4,4,4,4};

void setup() {
  for (byte n=0; n<8; n++) {
    int tiempo = 1000 / duracion[n];
    tone(8, melodia[n], tiempo);

    int pausa = tiempo * 1.30;
    delay (pausa);
    noTone(8);
  }
}
void loop() {
  //Nada
}

Vea también

Referencias