#include "pico/stdlib.h"
// Definições de pinos
#define BUTTON_A 2 // Botão A: Modo manual - Rede Elétrica
#define BUTTON_B 3 // Botão B: Modo manual - Solar
#define LED_ELEC 4 // LED indicador de Rede Elétrica
#define LED_SOLAR 5 // LED indicador de Solar
#define SENSOR_ELEC 6 // Simula a disponibilidade da Rede Elétrica
#define SENSOR_SOLAR 7 // Simula a disponibilidade de Energia Solar
void setup() {
// Configurar GPIOs
gpio_init(BUTTON_A);
gpio_set_dir(BUTTON_A, GPIO_IN);
gpio_pull_up(BUTTON_A);
gpio_init(BUTTON_B);
gpio_set_dir(BUTTON_B, GPIO_IN);
gpio_pull_up(BUTTON_B);
gpio_init(LED_ELEC);
gpio_set_dir(LED_ELEC, GPIO_OUT);
gpio_init(LED_SOLAR);
gpio_set_dir(LED_SOLAR, GPIO_OUT);
gpio_init(SENSOR_ELEC);
gpio_set_dir(SENSOR_ELEC, GPIO_IN);
gpio_pull_up(SENSOR_ELEC);
gpio_init(SENSOR_SOLAR);
gpio_set_dir(SENSOR_SOLAR, GPIO_IN);
gpio_pull_up(SENSOR_SOLAR);
}
void loop() {
bool elec_available = gpio_get(SENSOR_ELEC);
bool solar_available = gpio_get(SENSOR_SOLAR);
bool manual_mode = !gpio_get(BUTTON_A) || !gpio_get(BUTTON_B);
if (!manual_mode) {
// Modo automático
if (elec_available) {
gpio_put(LED_ELEC, 1);
gpio_put(LED_SOLAR, 0);
} else if (solar_available) {
sleep_ms(5000); // Espera 5 segundos para transição
gpio_put(LED_SOLAR, 1);
gpio_put(LED_ELEC, 0);
}
} else {
// Modo manual
if (!gpio_get(BUTTON_A)) {
gpio_put(LED_ELEC, 1);
gpio_put(LED_SOLAR, 0);
}
if (!gpio_get(BUTTON_B)) {
gpio_put(LED_SOLAR, 1);
gpio_put(LED_ELEC, 0);
}
}
sleep_ms(100); // Debounce
}
int main() {
setup();
while (1) {
loop();
}
}