Framework Arduino Básico Aula 08: Buzzers

 Imagem meramente ilustrativa

Buzzer

    Buzzer ou alto-falante piezoelétrico é um dispositivo acústico capaz de gerar som pela passagem de corrente elétrica por uma membrana de cristais piezoelétricos. São utilizados em projetos que necessitam de alarmes sonoros como beeps ou necessitem de melodias.

Elementos de um buzzer
Elementos de um buzzer


Tipos de Buzzer

    Os buzzers podem ser ativos quando possuem seu próprio dispositivo controlador necessitando apenas de uma fonte de energia. São capazes de trabalhar com uma única frequência de som, por isso geram uma única tonalidade de beep, cabendo ao desenvolvedor apenas ajustar a sua duração. Geralmente possuem um terminal maior (VCC) e outro menor (GND) e sua parte inferior apresenta uma carcaça protetora com um lacre.

    Já os passivos apresentam externamente dois terminais de mesmo tamanho e sua parte inferior fica exposta. Não possuem controlador próprio e aceitam diferentes frequências de som determinadas por dispositivos externos como o Arduino por isso são apropriados para gerar melodias.

Exemplo de uso

    Nossos projetos até agora trabalharam com leds mas não emitiram sons. Por isso vamos trazê-los de volta ao Wokwi e implementar um buzzer para deixá-los mais animados. Comece trazendo o led que acendia com um botão. Use o nosso link para agilizar.

    Link: https://wokwi.com/projects/411938098293675009

Montagem

    Ao carregar nosso projeto, salve uma cópia com o nome de Framework Arduino Básico Aula 08:Buzzer e Led. Depois mande adicionar um buzzer, para isso clique no botão + e digite buz no campo de pesquisa:

Botão para adicionar componentes no Wokwi
Botão para adicionar componentes no Wokwi

Adicionando um buzzer no Wokwi
Adicionando um buzzer no Wokwi


        Depois posicione o componente e crie conexões conforme o layout abaixo. Repare que o GND do buzzer esta no GND superior da placa juntamente com o led e o VCC do buzzer conectado ao pino 13 da placa:

Layout da inclusão do buzzer ao projeto
Layout da inclusão do buzzer ao projeto


Sketch

    Para manter o mesmo padrão usado até agora, vou criar uma variável inteira para armazenar o pino onde o buzzer foi conectado. Basicamente vamos precisar de duas funções tone() e noTone(). A primeira serve para ordenar a um pino que receba uma frequência de som em Hz com uma duração em milissegundos.

    Para isso ela recebe três parâmetros nessa disposição: tone(pino,frequencia,duração). Por essa razão vou criar também as variáveis inteiras frequencia e duracao que você poderá alterar posteriormente. Para interromper o buzzer é recomendável utilizar a função noTone() que precisa apenas do pino como parâmetro.

    Assim teremos o nosso primeiro Sketch onde as alterações eu coloquei em rosa:

  1. int led=2;
  2. int botao=11;
  3. int estado=0;
  4. int buzzer=13;
  5. int frequencia=500; //quanto maior, mais agudo
  6. int duracao=100;
  7. void setup() {
  8.   pinMode(led, OUTPUT);
  9.   pinMode(botao, INPUT);
  10.   Serial.begin(9600);
  11. }

  12. void loop() {
  13.   Serial.print("estado: ");
  14.   Serial.println(estado);
  15.   delay(100);
  16.   estado=digitalRead(botao);
  17.   if (estado==HIGH){
  18.     digitalWrite(led, HIGH);
  19.     tone(buzzer, frequencia,duracao);
  20.   }
  21.   else{
  22.     digitalWrite(led, LOW);
  23.     noTone(buzzer);
  24.   }
  25. }

    Link: https://wokwi.com/projects/412279304636204033

Outro projeto

     Se o buzzer o Wokwi se comporta como um buzzer passivo e aceita diferentes frequências, talvez fosse interessante mostrar a variação desse frequência em uma escala. Assim vamos trazer de volta a montagem com o led e potenciômetro para adicionar um buzzer.

    Carregue o nosso link para ganhar tempo e salve uma copia do projeto com o nome Framework Arduino Básico Aula 08: Buzzers e potenciômetro.

    Link: https://wokwi.com/projects/411848004063075329

Novo layout

    Depois adicione um buzzer e faça as conexões semelhantes ao projeto anterior dessa forma:

Layout do segundo projeto do dia
Layout do segundo projeto do dia


Modificando o Sketch

    Além das alterações feitas no projeto anterior com a inclusão das variáveis buzzer, frequencia e duracao, agora precisaremos criar uma escala de frequência com base na leitura obtida do potenciômetro e isso pode ser feito também com a função map() que já conhecemos.

    Nesse caso o map precisará dos seguinte parâmetros:

map(leitura01023, maior frequência inaudívelmaior frequência audível)

    Nos nossos testes o buzzer do Wokwi é audível com frequências entre 11 e 9000 hz, sendo assim a maior frequência inaudível é 10 hz. Pode ser que esses valores sejam diferentes de acordo com a capacidade auditiva de diferentes pessoas, mas o que vale é o raciocínio.

    Vamos mudar também o valor do último delay() para tornar a simulação mais rápida não esquecendo o noTone() no final para desativar o tone anterior preparar o pino para receber outras frequências e colocarei também a variação da frequência no monitor serial. Assim temos o seguinte sketch:

  1. int led=3;
  2. int pwm;
  3. int buzzer=13;
  4. int frequencia;
  5. int duracao=200;
  6. //atribuindo o pino do potenciometro
  7. int potenciometro=14;
  8. //variável para leitura do potenciometro
  9. int leitura=0;
  10. void setup() {
  11.   pinMode(led, OUTPUT);
  12.   Serial.begin(9600) ;
  13. }

  14. void loop() {
  15.   leitura=analogRead(potenciometro);
  16.   pwm=map(leitura,0,1023,0,255);
  17.   //de acordo com nossos testes no
  18.   //Wokwi a frequencia do buzzer é
  19.   //audível entre 11 e 9000 hz
  20.   frequencia=map(leitura,0,1023,10,9000);
  21.   analogWrite(led, pwm);
  22.   tone(buzzer,frequencia,duracao);
  23.   Serial.print(("leitura:"));
  24.   Serial.println(leitura);
  25.   Serial.print(("pwm:"));
  26.   Serial.println(pwm);
  27.   Serial.print(("Frequência:"));
  28.   Serial.println(frequencia);
  29.   delay(200);
  30.   noTone(buzzer);
  31. }

    link: https://wokwi.com/projects/412282682689209345

    Aula que vem falaremos sobre POO.


Próxima Aula                                                                                                                        Aula Anterior

Referências

ARDUINO DOCS. Arduino Documentation. Disponível em: <https://docs.arduino.cc/> Acesso em 05 ago. 2024.

OLIVEIRA, Cláudio Luis Vieira et al. Aprenda Arduino: Uma abordagem prática. Duque de Caixas: Katzen Editora, 2018. 181p. Disponível em: <https://www.fatecjd.edu.br/fatecino/material/ebook-aprenda-arduino.pdf> Acesso em 05 ago. 2024.

OLIVEIRA, Cláudio Luis Vieira. Arduino Descomplicado - Como Elaborar Projetos de Eletrônica. São Paulo: Editora Érica, 2015. 287p. 

TINKERCAD. Centro de Aprendizagem. Disponível em: <https://www.tinkercad.com/learn> Acesso em 05 ago. 2024.

WOKWI. Referência do wokwi-arduino-uno. Disponível em: <https://docs.arduino.cc/> Acesso em 05 ago. 2024.