Diferencia entre revisiones de «tone()»

De ArduWiki
Saltar a: navegación, buscar
(Vea también)
 
(No se muestran 5 ediciones intermedias del mismo usuario)
Línea 11: Línea 11:
 
! Placa !! Frecuencia Mín. (Hz) !! Frecuencia Máx (Hz)
 
! Placa !! Frecuencia Mín. (Hz) !! Frecuencia Máx (Hz)
 
|-
 
|-
| Uno, Mega, Leonardo y otras placas AVR || 31 || 65535
+
| [[UNO]], [[MEGA]], [[Leonardo]] y otras placas AVR || 31 || 65535
 
|-
 
|-
| Zero || 41 || 275000
+
| [[ZERO]] || 41 || 275000
 
|-
 
|-
| Gemma || No implementado || No implementado
+
| [[DUE]] y Gemma ||colspan=2|No implementado
|-
 
| Due || No implementado || No implementado
 
 
|}
 
|}
  
Línea 41: Línea 39:
 
* El uso de la función '''tone()''' interferirá con la salida PWM en los pines 3 y 11 (en placas distintas de la [[MEGA]]).
 
* 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 ==
+
== Ejemplo 1 ==
<pre>
+
<syntaxhighlight lang="c++">
</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
 +
}
 +
</syntaxhighlight>
 +
 
 +
== 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.
 +
 
 +
<syntaxhighlight lang="c++">
 +
void setup() {
 +
    //Nada
 +
}
 +
 +
void loop() {
 +
  int valor = analogRead(A0);
 +
  valor = map(valor, 200, 900, 100, 1000);
 +
  tone(8, frec, 10);
 +
}
 +
</syntaxhighlight>
  
 
== Vea también ==
 
== Vea también ==
* [[noTone()]]
+
<categorytree mode=all>Funciones tiempo</categorytree>
  
== Referencias ==
+
== Referencias externas ==
 
* [https://www.arduino.cc/reference/es/language/functions/time/tone/ Guia de referencia de Arduino]
 
* [https://www.arduino.cc/reference/es/language/functions/time/tone/ Guia de referencia de Arduino]
 +
* [http://itp.nyu.edu/physcomp/labs/labs-arduino-digital-and-analog/tone-output-using-an-arduino/ Tone output] - ITP Informatica Fisica
  
 
+
[[Category:Funciones tiempo]]
[[Category:Funciones]]
 

Revisión actual del 23:29 11 jun 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 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