#include <stdio.h>
#include "pico/stdlib.h"
#include "pico/cyw43_arch.h"
// Definindo os pinos GPIO para o LED e o botão
#define LED_PIN 15 // Pino GPIO 13 para o LED
#define BUTTON_PIN 9 // Pino GPIO 15 para o botão
// Função que configura os pinos
void setup() {
// Inicializa o pino do LED como saída
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
// Inicializa o pino do botão como entrada com pull-up (garante que o pino tenha um valor alto quando o botão não for pressionado)
gpio_init(BUTTON_PIN);
gpio_set_dir(BUTTON_PIN, GPIO_IN);
gpio_pull_up(BUTTON_PIN); // Ativa o resistor de pull-up
}
int main() {
setup(); // Configura os pinos
bool led_on = false; // Variável para controlar o estado do LED
bool last_button_state = false; // Variável para armazenar o estado anterior do botão
bool current_button_state = false; // Variável para armazenar o estado atual do botão
while (true) {
// Lê o estado atual do botão
current_button_state = gpio_get(BUTTON_PIN);
// Verifica se houve uma transição de "não pressionado" para "pressionado"
if (!current_button_state && last_button_state) {
// Alterna o estado do LED
led_on = !led_on;
gpio_put(LED_PIN, led_on); // Acende ou apaga o LED conforme o estado
sleep_ms(200); // Debouncing: pequeno atraso para evitar múltiplos acionamentos
}
// Atualiza o estado anterior do botão
last_button_state = current_button_state;
sleep_ms(10); // Pequeno atraso para evitar sobrecarga de processamento
}
return 0;
}