Controlando um Sonorizador Piezoelétrico sem a Função tone() com Potenciômetro no Arduino
Controlando um Sonorizador Piezoelétrico sem a Função tone()
com Potenciômetro no Arduino
Introdução
Neste projeto, vamos explorar como controlar um sonorizador piezoelétrico (buzzer) sem utilizar a função tone()
, criando um sinal PWM manualmente para gerar diferentes frequências sonoras. Um potenciômetro será usado para ajustar a frequência, conectado à porta analógica A5, enquanto o buzzer será ligado à porta digital 9 (PWM). Este projeto é importante para entender geração de sinais sonoros, modulação por largura de pulso (PWM) e leitura de valores analógicos no Arduino.
Materiais Necessários
Arduino (Uno, Nano ou similar)
1 Buzzer piezoelétrico (ou alto-falante pequeno)
1 Potenciômetro (10kΩ)
1 Resistor (220Ω, opcional para proteção)
Protoboard e jumpers
Montagem do Circuito
Buzzer:
Conecte o terminal positivo (+) ao pino digital 9 (PWM).
Conecte o terminal negativo (-) ao GND.
(Opcional) Use um resistor em série para limitar a corrente.
Potenciômetro:
Conecte o terminal central ao pino analógico A5.
Conecte um terminal externo ao +5V e o outro ao GND.
Programação no Arduino
Como não usaremos a função tone()
, vamos gerar um sinal PWM manualmente usando digitalWrite()
e delayMicroseconds()
para controlar a frequência do buzzer. O potenciômetro ajustará a frequência em tempo real.
Código Completo
const int buzzerPin = 9; // Buzzer no pino 9 (PWM) const int potPin = A5; // Potenciômetro no pino A5 void setup() { pinMode(buzzerPin, OUTPUT); // Configura o buzzer como saída } void loop() { int potValue = analogRead(potPin); // Lê o valor do potenciômetro (0-1023) // Mapeia o valor do potenciômetro para uma frequência (50Hz a 5kHz) int frequency = map(potValue, 0, 1023, 50, 5000); // Calcula o período em microssegundos (T = 1/f) int period = 1000000 / frequency; // Gera um sinal PWM manual (50% duty cycle) digitalWrite(buzzerPin, HIGH); delayMicroseconds(period / 2); digitalWrite(buzzerPin, LOW); delayMicroseconds(period / 2); }
Funcionamento do Projeto
Leitura do Potenciômetro:
O valor lido (
0-1023
) é mapeado para uma faixa de frequência audível (50Hz a 5kHz).
Geração de Frequência Manual:
O sinal é criado alternando o pino entre
HIGH
eLOW
com um delay proporcional à frequência desejada.Exemplo:
Se
frequency = 1000Hz
→period = 1000µs
(500µs ligado, 500µs desligado).
Controle em Tempo Real:
Girando o potenciômetro, o usuário altera a frequência instantaneamente.
Importância do Projeto
Este projeto é fundamental para o aprendizado em Arduino e eletrônica porque:
✅ Ensina a gerar sinais PWM manualmente, entendendo o princípio por trás da função tone()
.
✅ Aprofunda o conhecimento em temporização com delayMicroseconds()
.
✅ Mostra a relação entre frequência e período, conceito essencial para síntese sonora e comunicação digital.
✅ Introduz o uso de potenciômetros para controle analógico de parâmetros.
✅ Pode ser aplicado em projetos avançados, como:
Sintetizadores de áudio simples.
Alarmes com frequência ajustável.
Sistemas de feedback sonoro em robótica.
Expansões Possíveis
Adicionar um segundo potenciômetro para controlar a duração do som.
Implementar melodias simples usando um array de frequências.
Usar um sensor (ex: LDR) no lugar do potenciômetro para criar um theremin básico.
Conclusão
Este projeto demonstra como controlar um buzzer sem a função tone()
, oferecendo um entendimento mais profundo de geração de sinais e PWM. Ele é ideal para quem deseja ir além das funções prontas do Arduino e explorar a eletrônica de forma mais granular.
Experimente modificar a faixa de frequências ou adicionar novos controles! 🎛️
Comentários
Postar um comentário