Tone
Contenido
Descripción
La librería Tone de bhagman para producir una onda cuadrada de la frecuencia especificada en el rango audible, con un ciclo de trabajo del 50%, en cualquier pin de Arduino.
Opcionalmente, se puede especificar una duración; de lo contrario, la onda continúa hasta que la funcion stop() sea invocada.
El pin se puede conectar a un zumbador piezoeléctrico u otro altavoz para reproducir tonos.
Nota: Desde Arduino IDE 18 esta incorporada una version simplificada.
Placas aplicables
La cantidad de tonos que se pueden reproducir simultáneamente depende de la cantidad de temporizadores de hardware (con capacidad CTC) disponibles en el microcontrolador.
Ardujno | Cantidad | Temporizadores |
---|---|---|
ATmega 8 | 2 | 2 y 1 |
ATmega 168/328 | 3 | 2, 1 y 0 |
ATmega 1280 | 6 | 5, 4, 3, 2, 1 y 0 |
Nota: El orden de asignacion de temporizadores es el referido
Sintaxis
#include <Tone.h> Tone tono;
Métodos
Método | Descripción |
---|---|
begin(pin) | Prepara un pin para tocar un tono. |
isPlaying() | Devuelve true si el tono se esta reproducionedo. |
play(frecuencia [, duracion]) | Toca un tono de la frecuencia (Hz), por duracion de milisegundos. Si no pone duracion el tono se tocada indefinidamenre hasta stop(). |
stop() | Deja de tocar el tono. |
Nota: play() no bloque al Arduino independientemente de duracion.
Lista de frecuencias
Contante | Frecuencia (Hz) | Constante | Frecuencia (Hz) | Constante | Frecuencia (Hz) |
---|---|---|---|---|---|
NOTA_B0 | 31 | NOTA_A3 | 220 | NOTA_ | 1568 |
NOTA_C1 | 33 | NOTA_AS3 | 233 | NOTA_ | 1661 |
NOTA_CS1 | 35 | NOTA_B3 | 247 | NOTA_ | 1760 |
NOTA_D1 | 37 | NOTA_C4 | 262 | NOTA_ | 1865 |
NOTA_DS1 | 39 | NOTA_CS4 | 277 | NOTA_ | 1976 |
NOTA_E1 | 41 | NOTA_D4 | 294 | NOTA_ | 2093 |
NOTA_F1 | 44 | NOTA_DS4 | 311 | NOTA_ | 2217 |
NOTA_FS1 | 46 | NOTA_E4 | 330 | NOTA_ | 2349 |
NOTA_G1 | 49 | NOTA_F4 | 349 | NOTA_ | 2489 |
NOTA_GS1 | 52 | NOTA_FS4 | 370 | NOTA_37 | 2637 |
NOTA_A1 | 55 | NOTA_G4 | 392 | NOTA_F7 | 2794 |
NOTA_AS1 | 58 | NOTA_GS4 | 415 | NOTA_FS7 | 2960 |
NOTA_B1 | 62 | NOTA_A4 | 440 | NOTA_G7 | 3136 |
NOTA_C2 | 65 | NOTA_AS4 | 466 | NOTA_GS7 | 3322 |
NOTA_CS2 | 69 | NOTA_B4 | 494 | NOTA_A7 | 3520 |
NOTA_D2 | 73 | NOTA_C5 | 523 | NOTA_AS7 | 3729 |
NOTA_DS2 | 78 | NOTA_CS5 | 554 | NOTA_B7 | 3951 |
NOTA_E2 | 82 | NOTA_D5 | 587 | NOTA_C8 | 4186 |
NOTA_F2 | 87 | NOTA_CS5 | 622 | NOTA_DS8 | 4435 |
NOTA_FS2 | 93 | NOTA_E5 | 659 | NOTA_D8 | 4699 |
NOTA_G2 | 98 | NOTA_F5 | 698 | NOTA_DS8 | 4978 |
NOTA_GS2 | 104 | NOTA_FS5 | 740 | ||
NOTA_A2 | 110 | NOTA_G5 | 784 | ||
NOTA_AS2 | 117 | NOTA_GS5 | 831 | ||
NOTA_B2 | 123 | NOTA_A5 | 880 | ||
NOTA_C3 | 131 | NOTA_AS5 | 932 | ||
NOTA_CS3 | 139 | NOTA_B5 | 988 | ||
NOTA_D3 | 147 | NOTA_C6 | 1047 | ||
NOTA_DS3 | 156 | NOTA_CS6 | 1109 | ||
NOTA_E3 | 165 | NOTA_D6 | 1175 | ||
NOTA_F3 | 175 | NOTA_DS6 | 1245 | ||
NOTA_FS3 | 185 | NOTA_E6 | 1319 | ||
NOTA_G3 | 196 | NOTA_F6 | 1397 | ||
NOTA_GS3 | 208 | NOTA_FS6 | 1480 |
Comentarios
- Puedes usar un potenciómetro de 10k en serie con una resistencia de 1k para controlar el volumen del altavos (parlante).
- El rango auditivo humano es de aprox 20 kHz
Reloj uC | Fmin con Temporizador 8 bits | Fmin Temporizador de 16 bits | Fmax |
---|---|---|---|
8 MHz | 16 Hz | 1 Hz | 4 MHz |
16 MHz | 31 Hz | 1 Hz | 8 MHz |
Advertencias
- Nunca conecte el pin Arduino directamente a una entrada de audio. El voltaje es considerablemente más alto que un voltaje de nivel de línea estándar y puede dañar las entradas de audio. Puede usar un divisor de tensión para adecuar la salida de Arduino a la entrada de audio.
- Si usa un altavoz (parlante) DEBE poner una resistencia de 1K en serie o dañada la salida del Arduino.
- Si asigna el Temporizador 0 afectara el uso PWM y millis().
- La librería solo acepta números enteros positivos [unsigned int] como frecuencias. Osea la frecuencia maxima sera 65 535 Hz.
Ejemplo
Vea también