#include <stdio.h>
#include "pico/stdlib.h"
#define rele1 16
void inicializa_rele()
{
gpio_init(rele1);
gpio_set_dir(rele1, GPIO_OUT);
}
#define botaoA 5
#define debounece_delay 300
volatile uint last_interrupt_time = 0;
void inicializa_botao()
{
gpio_init(botaoA);
gpio_set_dir(botaoA, GPIO_IN);
gpio_pull_up(botaoA); // Ativa o pull-up interno
}
void debounce_button() {
uint current_time = to_ms_since_boot(get_absolute_time());
if (current_time - last_interrupt_time > debounece_delay) {
last_interrupt_time = current_time;
gpio_put(rele1, !gpio_get(rele1)); // Inverte o estado do relé
printf("Relé %s\n", gpio_get(rele1) ? "ligado" : "desligado");
}
}
int main() {
stdio_init_all();
inicializa_rele();
inicializa_botao();
printf("Sistema iniciado. Pressione o botão para controlar o relé.\n");
gpio_set_irq_enabled_with_callback(botaoA, GPIO_IRQ_EDGE_FALL, true, &debounce_button);
while (true)
{
tight_loop_contents();
}
return 0;
}Loading
pi-pico-w
pi-pico-w