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ê chamarnoTone().
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 oanalogWrite()(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.