51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#include <pico/stdlib.h>
|
|
|
|
void gpio_init_out(uint gpio) {
|
|
gpio_set_dir(gpio, GPIO_OUT);
|
|
gpio_put(gpio, 0);
|
|
gpio_set_function(gpio, GPIO_FUNC_SIO);
|
|
}
|
|
|
|
void gpio_callback(uint gpio, uint32_t events) {}
|
|
|
|
class Valve {
|
|
public:
|
|
Valve(uint gpio_motor1, uint gpio_motor2, uint gpio_start, uint gpio_end)
|
|
: motor1(gpio_motor1), motor2(gpio_motor2), start_pin(gpio_start),
|
|
end_pin(gpio_end) {
|
|
gpio_init_out(motor1);
|
|
gpio_init_out(motor2);
|
|
gpio_set_irq_enabled_with_callback(start_pin, GPIO_IRQ_EDGE_RISE, true,
|
|
&gpio_callback);
|
|
gpio_set_irq_enabled_with_callback(end_pin, GPIO_IRQ_EDGE_RISE, true,
|
|
&gpio_callback);
|
|
}
|
|
|
|
void open() {
|
|
gpio_put(motor2, 0);
|
|
gpio_put(motor1, 1);
|
|
}
|
|
|
|
void close() {
|
|
gpio_put(motor1, 0);
|
|
gpio_put(motor2, 1);
|
|
}
|
|
|
|
private:
|
|
uint motor1, motor2;
|
|
uint start_pin, end_pin;
|
|
};
|
|
|
|
int main() {
|
|
Valve *v = new Valve(0, 1, 4, 5);
|
|
|
|
gpio_init_out(PICO_DEFAULT_LED_PIN);
|
|
while (true) {
|
|
gpio_put(PICO_DEFAULT_LED_PIN, 1);
|
|
sleep_ms(200);
|
|
gpio_put(PICO_DEFAULT_LED_PIN, 0);
|
|
sleep_ms(200);
|
|
}
|
|
return 0;
|
|
}
|