#include "pico/stdlib.h"
#include "hardware/pwm.h"
#include "hardware/clocks.h"
#define BUZZER_PIN 28
#define FREQUENCIA_BAIXA 440
#define FREQUENCIA_ALTA 660
#define DURACAO_NOTA 850
void configurar_buzzer(int pin) {
gpio_set_function(pin, GPIO_FUNC_PWM); // aqui eu escolho o pino do buzzer
uint slice_num = pwm_gpio_to_slice_num(pin);
pwm_config configuracao = pwm_get_default_config();
pwm_config_set_clkdiv(&configuracao, 1.0);
pwm_init(slice_num, &configuracao, true);
pwm_set_gpio_level(pin, 0);
}
void ajustar_frequencia(int pin, int freq) {
uint slice_num = pwm_gpio_to_slice_num(pin);
uint32_t clock_div = clock_get_hz(clk_sys) / (freq * 5000);
pwm_set_wrap(slice_num, 5000 - 1);
pwm_set_clkdiv(slice_num, clock_div);
}
void emitir_som(int pin, int freq, int duracao_ms) {
ajustar_frequencia(pin, freq);
pwm_set_gpio_level(pin, 2500);
sleep_ms(duracao_ms);
pwm_set_gpio_level(pin, 0);
}
int main() {
stdio_init_all();
configurar_buzzer(BUZZER_PIN);
while (true) { // Loop infinito alternando entre as duas notas
emitir_som(BUZZER_PIN, FREQUENCIA_BAIXA, DURACAO_NOTA); // **BUZZER_PIN**, **FREQUENCIA_BAIXA** e **DURACAO_NOTA** são variáveis do usuário
sleep_ms(150); // Pausa entre as notas
emitir_som(BUZZER_PIN, FREQUENCIA_ALTA, DURACAO_NOTA); // **BUZZER_PIN**, **FREQUENCIA_ALTA** e **DURACAO_NOTA** são variáveis do usuário
sleep_ms(100); // Pausa entre as notas
}
return 0;
}