tone()

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.

El uso de la función tone() interferirá con la salida PWM en los pines 3 y 11 (en las placas distintas de la Mega).

Placa Frecuencia Mín (Hz) Frecuencia Máx (Hz)
Uno, Mega, Leonardo y otras placas AVR 31 65535
Gemma No implementado No implementado
Zero 41 275000
Due No implementado 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, frequency)

tone(pin, frequency, duration)

Parámetros

  • pin: el pin en el que se quiere generar el tono
  • frequency: la frecuencia del tono en hertzios - int sin signo
  • duration: la duración del tono en milisegundos (opcional) - long sin signo

Retornos

  • Ninguno

Ejemplo

Let's to play "Jingle Bells" song with Arduino.

Hardware Required

1×Arduino UNO or Genuino UNO
1×Piezo Buzzer
1×Breadboard
n×Jumper Wires
Please note: These are affiliate links. If you buy the components through these links, We may get a commission at no extra cost to you. We appreciate it.

Wiring Diagram

Arduino Piezo Buzzer Wiring Diagram

Image is developed using Fritzing. Click to enlarge image

Arduino Code

/* * Created by ArduinoGetStarted.com * * This example code is in the public domain * * Tutorial page: https://arduinogetstarted.com/es/reference/tone */ #include "pitches.h" // notes in the melody: int melody[] = { NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_G5 }; // note durations: 4 = quarter note, 8 = eighth note, etc, also called tempo: int noteDurations[] = { 8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 2, 8, 8, 8, 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 4, 4 }; void setup() { // iterate over the notes of the melody: int size = sizeof(noteDurations) / sizeof(int); for (int thisNote = 0; thisNote < size; thisNote++) { // to calculate the note duration, take one second divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 1000 / noteDurations[thisNote]; tone(8, melody[thisNote], noteDuration); // to distinguish the notes, set a minimum time between them. // the note's duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); // stop the tone playing: noTone(8); } } void loop() { // no need to repeat the melody. }

For more detailed instruction, see Arduino - Piezo Buzzer

Ver También

※ OUR MESSAGES

  • We are AVAILABLE for HIRE. See how to hire us to build your project
  • Any suggestion, correction, and translation? please email us at ArduinoGetStarted@gmail.com, We appreciate it
  • We mainly keep improving the references in English. See English version of this page for the latest update.