Очередь сообщений. Упрощаем себе loop()

Тема в разделе "Arduino & Shields", создана пользователем DetSimen, 22 июн 2017.

  1. sslobodyan

    sslobodyan Гик

    В данном случае - никак. Мои поделки месяцами включенными пока не работали. Но если переполнение возможно, то правки минимальны.
    Код (C++):
    uint32_t tim_point, tim_button;
    bool en_point, en_button;
    #define TIM_POINT_MS 500
    #define TIM_BUTTON_MS 30

    void setup() {
        tim_button = millis();
        tim_point = millis();
        en_button = true;
        en_point = true;
    }

    void point_handler() {
        if (millis() - tim_point > TIM_POINT_MS ) {
            tim_point = millis();
            // переключаю мигалку или другая работа
        }
    }

    void button_handler() {
        if ( millis() - tim_button > TIM_BUTTON_MS ) {
            tim_button = millis();
            // сканирую кнопки или другая работа
        }
    }

    loop() {
        if (en_point) point_handler();
        if (en_button) button_handler();
    }
     
    SergeiL нравится это.