#include <stdio.h>
#include "pico/stdlib.h"
#include "pico/cyw43_arch.h"
#define LED_PIN 0
#define SW_PIN 20
volatile uint32_t interval_ms = 500;
void on_switch(uint gpio, uint32_t events) {
interval_ms = (interval_ms == 500) ? 100 : 500; // 間隔を切替
}
int main() {
stdio_init_all();
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
gpio_init(SW_PIN);
gpio_set_dir(SW_PIN, GPIO_IN);
bool led_on = true;
gpio_set_irq_enabled_with_callback(SW_PIN, GPIO_IRQ_EDGE_FALL, true, &on_switch);
uint64_t next_toggle_us = time_us_64();
while (true) {
uint64_t now = time_us_64();
if (now >= next_toggle_us) { // 締め切りが来たか
led_on = !led_on;
gpio_put(LED_PIN, led_on);
next_toggle_us += interval_ms*1000; // 次を予約
}
sleep_ms(1); // シミュレーター(Wokwi)に処理の隙間を与える
}
}