tone()

De ArduWiki
Revisión del 23:29 11 jun 2019 de Kike GL (Discusión | contribuciones) (Vea también)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

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 1

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
}

Ejemplo 2

Escriba un boceto para leer la entrada analógica y asigne el resultado a un rango de 100 a 1000. Almacene el resultado en una variable local llamada frecuencia. Esta será la frecuencia que toque en el altavoz. Luego use el comando de tono() para configurar la frecuencia del altavoz en el pin digital 8 durante 10 ms.

void setup() {
    //Nada
 }
 
 void loop() {
   int valor = analogRead(A0);
   valor = map(valor, 200, 900, 100, 1000);
   tone(8, frec, 10);
 }

Vea también


Referencias externas