Diferencia entre revisiones de «tone()»
(→Ejemplo) |
(→Referencias) |
||
Línea 79: | Línea 79: | ||
== Referencias == | == Referencias == | ||
* [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]] | [[Category:Funciones]] |
Revisión del 21:41 12 may 2019
Contenido
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
- Guia de referencia de Arduino
- Tone output - ITP Informatica Fisica