timer test

start transitions
some fixes
This commit is contained in:
2024-02-05 20:28:24 +03:00
parent 194095da7d
commit 5a3a79bba2
4 changed files with 36 additions and 21 deletions

View File

@@ -3,6 +3,20 @@
#include <pico/stdlib.h>
enum class LedState {
Off,
On,
Blink
};
LedState led_state = LedState::Off;
bool led_timer_callback(struct repeating_timer * t) {
if (led_state == LedState::Blink) {
gpio_put(PICO_DEFAULT_LED_PIN, !gpio_get(PICO_DEFAULT_LED_PIN));
}
return true;
}
int main() {
Valve cold_valve{10, 11, 12, 13};
@@ -14,6 +28,9 @@ int main() {
gpio_init_input(button_open);
gpio_init_input(button_close);
struct repeating_timer led_timer;
add_repeating_timer_ms(-200, led_timer_callback, NULL, &led_timer);
const int tick_ms = 50;
while (true) {
if (gpio_get(button_open) == 0) {
@@ -28,14 +45,16 @@ int main() {
const auto cst = cold_valve.process();
hot_valve.process();
switch (cst) {
case Valve::State::Opened:
case Valve::State::Closed: gpio_put(PICO_DEFAULT_LED_PIN, 1); break;
default: break;
case Valve::State::Opened: led_state = LedState::On; break;
case Valve::State::Closed: led_state = LedState::Off; break;
case Valve::State::Opening: led_state = LedState::Blink; break;
case Valve::State::Closing: led_state = LedState::Blink; break;
case Valve::State::Unknown: led_state = LedState::Off; break;
}
if (cst == Valve::State::Opened || cst == Valve::State::Closed) {
gpio_put(PICO_DEFAULT_LED_PIN, 1);
} else {
gpio_put(PICO_DEFAULT_LED_PIN, 0);
switch (led_state) {
case LedState::On: gpio_put(PICO_DEFAULT_LED_PIN, 1); break;
case LedState::Off: gpio_put(PICO_DEFAULT_LED_PIN, 0); break;
default: break;
}
}
return 0;