#include "pico/stdlib.h" // Inclui a biblioteca padrão para a Raspberry Pi Pico, fornecendo funções para controlar os pinos e outros recursos.
const uint8_t pir_pin = 15; // Define o pino 15 do Raspberry Pi Pico para o sensor PIR (detecção de movimento).
const uint8_t led_pin = 13; // Define o pino 13 do Raspberry Pi Pico para o LED (indicação visual de movimento).
const uint8_t buzzer_pin = 14; // Define o pino 14 do Raspberry Pi Pico para o buzzer (emissão de som para alertar movimento detectado).
// Função para gerar um tom no buzzer
void tone(uint pin, uint frequency, uint duration) {
uint period = 120000 / frequency; // Calcula o período do tom em microsegundos.
uint cycles = (duration * 1000) / period; // Calcula quantos ciclos de tom serão necessários para a duração.
for (uint i = 0; i < cycles; i++) {
gpio_put(pin, 1); // Coloca o pino em alto (1), ligando o buzzer.
sleep_us(period / 2); // Aguarda metade do período.
gpio_put(pin, 0); // Coloca o pino em baixo (0), desligando o buzzer.
sleep_us(period / 2); // Aguarda a outra metade do período.
}
}
int main() {
gpio_init(pir_pin); // Inicializa o pino conectado ao sensor PIR (pino 15) para que possa ser utilizado.
gpio_set_dir(pir_pin, GPIO_IN); // Configura o pino do sensor PIR como **entrada**.
gpio_init(led_pin); // Inicializa o pino do LED (pino 13).
gpio_set_dir(led_pin, GPIO_OUT); // Configura o pino do LED como **saída**.
gpio_init(buzzer_pin); // Inicializa o pino do buzzer (pino 14).
gpio_set_dir(buzzer_pin, GPIO_OUT); // Configura o pino do buzzer como **saída**.
while (true) {
if (gpio_get(pir_pin)) { // Se o sensor PIR detectar movimento.
gpio_put(led_pin, 1); // Aciona o LED.
tone(buzzer_pin, 262, 400); // Toca um tom de 262Hz no buzzer por 250ms.
} else { // Se o sensor PIR não detectar movimento.
gpio_put(led_pin, 0); // Desliga o LED.
gpio_put(buzzer_pin, 0); // Desliga o buzzer.
}
sleep_ms(100); // Atraso de 100ms para evitar leituras excessivas do sensor.
}
}