#include "relais.h" Relais::Relais(uint gpio, gpio_irq_callback_t callback) : gpio{gpio}, callback{callback} { gpio_init(gpio); gpio_set_dir(gpio, GPIO_OUT); off(); } void Relais::activate(bool active) { if (active == lastState) { return; } lastState = active; gpio_set_irq_enabled_with_callback(BUTTON_1_PIN, GPIO_IRQ_EDGE_FALL, false, callback); gpio_set_irq_enabled_with_callback(BUTTON_2_PIN, GPIO_IRQ_EDGE_FALL, false, callback); gpio_set_irq_enabled_with_callback(BUTTON_3_PIN, GPIO_IRQ_EDGE_FALL, false, callback); gpio_put(gpio, !active); sleep_ms(100); gpio_set_irq_enabled_with_callback(BUTTON_1_PIN, GPIO_IRQ_EDGE_FALL, true, callback); gpio_set_irq_enabled_with_callback(BUTTON_2_PIN, GPIO_IRQ_EDGE_FALL, true, callback); gpio_set_irq_enabled_with_callback(BUTTON_3_PIN, GPIO_IRQ_EDGE_FALL, true, callback); } void Relais::on() { activate(true); } void Relais::off() { activate(false); }