/*#include "pico/stdlib.h"
#define BUZZER_PIN 21
int main() {
gpio_init(BUZZER_PIN);
gpio_set_dir(BUZZER_PIN, GPIO_OUT);
while (true) {
gpio_put(BUZZER_PIN, 1);
sleep_ms(1);
gpio_put(BUZZER_PIN, 0);
sleep_ms(1);
}
}*/
#include "pico/stdlib.h"
#define BUZZER_PIN 21
// Função para gerar um som por um tempo específico em uma frequência dada
void play_tone(uint32_t frequency, uint32_t duration_ms) {
uint32_t period_us = 1000000 / frequency; // Período do sinal em microssegundos
uint32_t half_period_us = period_us / 2; // Meia onda do sinal
uint32_t cycles = (duration_ms * 1000) / period_us; // Número de ciclos necessários
for (uint32_t i = 0; i < cycles; i++) {
gpio_put(BUZZER_PIN, 1);
sleep_us(half_period_us);
gpio_put(BUZZER_PIN, 0);
sleep_us(half_period_us);
}
}
// Função para tocar uma melodia básica
void play_melody() {
// Frequências em Hertz (notas musicais) e suas durações
uint32_t melody[][2] = {
{262, 500}, // Dó
{294, 500}, // Ré
{330, 500}, // Mi
{349, 500}, // Fá
{392, 500}, // Sol
{440, 500}, // Lá
{494, 500}, // Si
{523, 500} // Dó mais agudo
};
for (int i = 0; i < 8; i++) {
play_tone(melody[i][0], melody[i][1]);
sleep_ms(100); // Pausa entre as notas
}
}
int main() {
gpio_init(BUZZER_PIN);
gpio_set_dir(BUZZER_PIN, GPIO_OUT);
while (true) {
play_melody();
sleep_ms(1000);
}
}