Controlando o buzzer
Vamos agora explorar a utilização do buzzer. Vamos entender a relação entre o buzzer e a frequência do som.
!Informações Importantes
O buzzer do Nanoshield Interface (clique no link para mais informações) está ligado ao pino pino D5# do Arduino. O buzzer trabalha com frequências para emitir um som.
A frequência é a característica através da qual o ouvido distingue se um som é agudo ou grave. Esta característica está relacionada com a quantidade de ciclos (vibrações) de um onda sonora em um período de um segundo, e é expressa em Hertz (Hz).
O espectro de frequências que o ouvido humano pode entender engloba sons entre 20 Hz e 20.000 Hz ou 20 kHz (1 kHz = 1 Kilohertz ou 1000 Hz).
Aplicando um sinal elétrico em uma determinada frequência, o buzzer produz uma nota musical. As notas variam conforme a frequência utilizada.
O buzzer é um dispositivo piezoelétrico de sinalização. Você pode usá-lo de diversas maneiras no seu projeto, por exemplo, um clique, um beep ou som curto podem indicar, por exemplo, que um botão foi pressionado, ou que um sensor foi ativado.
!Identificando os Componentes
Na figura abaixo, podemos ver a localização do buzzer no Nanoshield Interface.
!Componentes de código
Funções
tone([pin],[frequency])
:
Você pode fazer sons com um buzzer usando a funçãotone()
. Para utilizá-la, você precisa apenas dizer o pino em que o buzzer está conectado e qual freqüência (em Hertz) você quer. Por exemplo tone(5, 4000);
produz uma frequencia de 4 kHz no pino D5 do Arduino.
noTone([pin])
:
Para interromper o som temos que recorrer a outra função chamada noTone()
. Essa função recebe como parâmetro apenas o pino, sem necessidade de se especificar a frequencia. Por exemplo noTone (5);
.
!Executando no Arduino
Execute o código abaixo no seu Arduino para fazer com que o buzzer toque notas musicais.
// Pino ligado ao buzzer int buzzer = 5; void setup() { // Define o pino do Buzzer como Saida pinMode(buzzer,OUTPUT); } void loop() { // Aciona o buzzer na frequencia relativa ao Dó em Hz tone(buzzer,261); // Espera um tempo para Desativar delay(200); //Desativa o buzzer noTone(buzzer); // Aciona o buzzer na frequencia relativa ao Ré em Hz tone(buzzer,293); delay(200); noTone(buzzer); // Aciona o buzzer na frequencia relativa ao Mi em Hz tone(buzzer,329); delay(200); noTone(buzzer); // Aciona o buzzer na frequencia relativa ao Fá em Hz tone(buzzer,349); delay(200); noTone(buzzer); // Aciona o buzzer na frequencia relativa ao Sol em Hz tone(buzzer,392); delay(200); noTone(buzzer); }
!Sua vez!
Tente modificar o código acima utilizando LED verde para sinalizar que o buzzer está em funcionamento e o LED amarelo quando esse estiver no período de intervalo.
Resposta
//Pino ligado ao buzzer int buzzer = 5; // Associando o LEDs aos Pinos correspondentes int ledAmarelo = A1; int ledVerde = A2;void setup() { // Define o pino do buzzer como Saida pinMode(buzzer,OUTPUT); // Inicializar cada pino do LED como saída pinMode(ledAmarelo,OUTPUT); pinMode(ledVerde,OUTPUT); }
void loop() { // Acende o LED Amarelo digitalWrite(ledAmarelo, HIGH); // Espera um segundo delay(1000); // Apaga o LED Amarelo digitalWrite(ledAmarelo, LOW); // Acende o LED Verde digitalWrite(ledVerde, HIGH); // Aciona o buzzer na frequencia recebida tone(buzzer,261); delay(200); noTone(buzzer); // Apaga o LED Verde digitalWrite(ledVerde, LOW); // Acende o LED Verde digitalWrite(ledVerde, HIGH); // Aciona o buzzer na frequencia recebida tone(buzzer,293); delay(200); noTone(buzzer); // Apaga o LED Verde digitalWrite(ledVerde, LOW); // Acende o LED Verde digitalWrite(ledVerde, HIGH); // Aciona o buzzer na frequencia recebida tone(buzzer,329); delay(200); noTone(buzzer); // Apaga o LED Verde digitalWrite(ledVerde, LOW); // Acende o LED Verde digitalWrite(ledVerde, HIGH); // Aciona o buzzer na frequencia recebida tone(buzzer,349); delay(200); noTone(buzzer); // Apaga o LED Verde digitalWrite(ledVerde, LOW); // Acende o LED Verde digitalWrite(ledVerde, HIGH); // Aciona o buzzer na frequencia recebida tone(buzzer,261); delay(200); noTone(buzzer); // Apaga o LED Verde digitalWrite(ledVerde, LOW); // Acende o LED Verde digitalWrite(ledVerde, HIGH); // Aciona o buzzer na frequencia recebida tone(buzzer,392); delay(200); noTone(buzzer); // Apaga o LED Verde digitalWrite(ledVerde, LOW); digitalWrite(ledAmarelo, HIGH); delay(100); }