Diferencia entre revisiones de «tone()»
De ArduWiki
(→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
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
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 }