#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/adc.h"
#define BUZZER_PIN 15 // Pino do buzzer
#define BUTTON_PIN 14 // Pino do botão
#define LDR_PIN 26 // Pino do LDR (entrada analógica)
#define THRESHOLD 2000 // Limite para luz baixa (ajustável)
int main() {
stdio_init_all();
// Configuração do buzzer
gpio_init(BUZZER_PIN);
gpio_set_dir(BUZZER_PIN, GPIO_OUT);
gpio_put(BUZZER_PIN, 0); // Garante que o buzzer inicie desligado
// Configuração do botão
gpio_init(BUTTON_PIN);
gpio_set_dir(BUTTON_PIN, GPIO_IN);
gpio_pull_up(BUTTON_PIN); // Habilita pull-up interno
// Configuração do LDR (entrada analógica)
adc_init();
adc_gpio_init(LDR_PIN);
adc_select_input(0); // Seleciona o ADC0 (correspondente ao GPIO26)
while (1) {
// Leitura do valor do LDR (0-4095)
adc_select_input(0); // Seleciona a entrada analógica correspondente
uint16_t ldr_value = adc_read();
// Leitura do estado atual do botão
bool button_pressed = !gpio_get(BUTTON_PIN); // O botão está pressionado? (nível baixo)
// Exibe os valores no console do Wokwi
printf("LDR Value: %d, Button Pressed: %d\n", ldr_value, button_pressed);
// Verifica condições para ativar o buzzer
if (ldr_value < THRESHOLD || button_pressed) {
gpio_put(BUZZER_PIN, 1); // Liga o buzzer se uma das condições for atendida
printf("Buzzer Ativado\n");
} else {
gpio_put(BUZZER_PIN, 0); // Desliga o buzzer
printf("Buzzer Desativado\n");
}
// Exibe o estado atual do buzzer
bool buzzer_state = gpio_get(BUZZER_PIN);
printf("Estado do Buzzer: %d\n", buzzer_state);
sleep_ms(100); // Delay reduzido para melhor resposta
}
}