Diferencia entre revisiones de «tone()»
(→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 |
|- | |- | ||
− | | | + | | [[ZERO]] || 41 || 275000 |
|- | |- | ||
− | | Gemma || | + | | [[DUE]] y Gemma ||colspan=2|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 == |
− | < | + | <syntaxhighlight lang="c++"> |
− | </ | + | 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 == | ||
− | + | <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
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 externas
- Guia de referencia de Arduino
- Tone output - ITP Informatica Fisica