#include #include #include #include "pico/stdlib.h" #include "pico/sleep.h" #include "hardware/gpio.h" static constexpr std::size_t button_gpio = 6; static constexpr std::size_t led_gpio = 2; static constexpr std::array gpio_on_sequence { 3, 4, 5 }; static constexpr std::array gpio_off_sequence { 5, 4, 3 }; static constexpr std::size_t delay_ms = 100; int main() { bool state = false; // init LED gpio_init(led_gpio); gpio_set_dir(led_gpio, GPIO_OUT); gpio_put(led_gpio, state); // init relay GPIOs for (auto const & relay : gpio_off_sequence) { gpio_init(relay); gpio_set_dir(relay, GPIO_OUT); gpio_put(relay, state); } while (true) { sleep_run_from_xosc(); sleep_goto_dormant_until_edge_high(button_gpio); sleep_power_up(); state = !state; gpio_put(led_gpio, state); auto const & sequence = state ? gpio_on_sequence : gpio_off_sequence; for (auto const & relay : sequence) { gpio_put(relay, state); sleep_ms(delay_ms); } } }