tone()

Descrição

Gera uma onda quadrada na frequência especificada (e duty cycle 50%) em um pino. A duração pode ser especificada, do contrário a onda continua até uma chamada de noTone(). O pino pode ser conectado a um buzzer piezo ou outro speaker para tocar tons.

Apenas um tom pode ser gerado de cada vez. Se um tom já está tocando em um pino diferente, a chamada de tone() não terá efeito. Se o tom está tocando no mesmo pino, a chamada irá mudar sua frequência para a nova especificada.

Uso da função tone() irá interferir com saída PWM nos pinos 3 e 11 (em placas diferentes do Mega).

Não é possível gerar tons de freqeuência mais baixa que 31Hz. Para detalhes técnicos, veja as notas de Brett Hagman's(Em Inglês).

Sintaxe

tone(pino, frequência)

tone(pino, frequência, duração)

Parâmetros

  • pino: o pino do Arduino no qual gerar o tom
  • frequência: a frequência do tom em Hertz - unsigned int
  • duração: a duração do tom em milissegundos (opcional) - unsigned long

Retorna

Nada.

Código de Exemplo

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/pt/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

※ Notas e Advertências:

Se você quiser tocar tons diferentes em múltiplos pinos, você precisa chamar noTone() em um pino antes de chamar tone() no próximo pino.

Ver Também

※ 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.