#include <stdio.h>
#include "pico/stdlib.h"
#include "pico/cyw43_arch.h"
#define LED_PIN 0
#define SW_PIN 20
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);
uint32_t interval_ms = 100;
bool led_on = true;
bool sw_prev = 1; // 前回の読み値(初期は H)
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; // 次を予約
}
bool sw = gpio_get(SW_PIN); // 今回の読み値
if (sw_prev == 1 && sw == 0) { // H→L の“その瞬間”だけ
interval_ms = (interval_ms == 500) ? 100 : 500;
}
sw_prev = sw; // 次回のために保存
sleep_ms(1); // シミュレーター(Wokwi)に処理の隙間を与える
}
}