Скетч для управления думя реле

Тема в разделе "Arduino & Shields", создана пользователем denis125, 12 мар 2020.

  1. denis125

    denis125 Нуб

    Помогите пожалуйста разобраться со скетчем! Нужно, чтобы по нажатию кнопки последовательно включались 2 реле с паузой около 5 сек. При повторном нажатии выключались в обратном порядке тоже с паузой. Набросал вот это:
    Код (C++):
    int pinButton = 8;
    int Relay1 = 2;
    int Relay2 = 3;
    int stateRelay1 = HIGH;
    int stateRelay2 = HIGH;
    int stateButton;
    int previous = LOW;
    long time = 0;
    long debounce = 500;
    void setup() {
    pinMode(pinButton, INPUT);
    pinMode(Relay1, OUTPUT);
    pinMode(Relay2, OUTPUT);
    }
    void loop() {
    stateButton = digitalRead(pinButton);
    if(stateButton == HIGH && previous == LOW && millis() - time > debounce) {
    if(stateRelay1 == HIGH && stateRelay2 == HIGH){
    stateRelay1 = LOW;
    stateRelay2 = LOW;
    }
    else {
    stateRelay2 = HIGH;
    stateRelay1 = HIGH;
    }
    time = millis();
    }
    digitalWrite(Relay1, stateRelay1);
    digitalWrite(Relay2, stateRelay2);
    previous == stateButton;
    }
    Работает почти как надо, только не получается задать паузу между включениями реле. Если вставить delay(), то оба реле включаются и выключаются по истечении паузы звдвнной.
     
  2. b707

    b707 Гуру

    ну так вы же сами их включаете и выключаете синхронно. Если надо по отдельности - так и включайте по отдельности.
     
  3. denis125

    denis125 Нуб

    Ткните пожалуйста носом, как это реализовать
     
  4. b707

    b707 Гуру

    Это не так просто, как кажется.

    Ваша система может находится в 4х состояниях
    1. Оба реле выключены
    2. Одно реле включена, идет задержка на включение второго
    3. Оба реле включены
    4 Одно реле выключено, идет задержка на выключение второго

    Далее нужно определить, что делает кнопка в каждом из этих состояний. Вы пока указали только что будет при нажатии в состояниях 1 и3, а состояниях 2 и 4 - нет.

    Далее создаете переменную. где храните состояние системы. каждый раз когда состояние меняется - меняете и переменную. Если вдруг кнопка нажата - смотрите. какое состояние и по табличке отрабатываете нужное действие
     
  5. denis125

    denis125 Нуб

    Спасибо за подсказку. Попробую это реализовать. Хотя знаний может не хватить...