tone()

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

Quer fazer o Arduino apitar ou tocar uma musiquinha? O tone() gera uma onda quadrada de 50% de ciclo (metade ligado, metade desligado) na frequência que você pedir. Ligado num buzzer ou alto-falante, isso vira som audível.

Sintaxe

tone(pino, frequencia);
tone(pino, frequencia, duracao);

Parâmetros

  • pino: o pino onde o buzzer está ligado.
  • frequencia: a frequência da nota em hertz (Hz), como unsigned int. No Uno vai de ~31 Hz até dezenas de kHz.
  • duracao (opcional): quanto tempo o som dura, em milissegundos (unsigned long). Sem esse parâmetro, o som toca até você chamar noTone().

Retorno

Nada (void).

Exemplo

const int BUZZER = 8;

void setup() {
  pinMode(BUZZER, OUTPUT);
}

void loop() {
  tone(BUZZER, 440);   // nota Lá (A4)
  delay(500);
  tone(BUZZER, 523);   // nota Dó (C5)
  delay(500);
  noTone(BUZZER);      // silêncio
  delay(500);
}

Notas e cuidados

  • Só dá pra tocar uma nota por vez: um novo tone() substitui o anterior, mesmo em outro pino.
  • No Uno, o tone() usa o Timer2 e atrapalha o analogWrite() (PWM) nos pinos 3 e 11.
  • Mesmo passando a duracao, a função não bloqueia: o código continua enquanto o som toca em segundo plano.

Quer aprender a usar isso em projetos reais, do zero?

Conhecer o Curso Maker