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.

Buzzer 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); }