Помогите, я хочу постоянно включать реле, пока не будет обнаружена разница, но вместо этого срабатывает только одно

Помогите, я хочу использовать Arduino для управления реле для электричества, я получаю данные от датчика, и при обнаружении значения оно должно быть постоянно включено, пока снова не сработает другое обнаружение, я могу заставить программу работать, но срабатывает только один раз вместо этого, когда он должен быть постоянно включен, вот мой код:

int Pinout = 13;

void setup() {
    Serial.begin(9600);
    pinMode(Pinout, OUTPUT);
}

void loop() {
    int val = analogRead(A0);
    if (val <= 500) {
        digitalWrite(Pinout, LOW);
    }
    else {
        digitalWrite(Pinout, HIGH);
    }
}

реле, которое я использую, представляет собой китайский релейный модуль с 3 контактами, VCC и GND, подключенный к внешнему источнику питания, и входной контакт к 13 цифровым контактам Arduino, и реле, которое, как я полагаю, является активным НИЗКИМ, и для аналогового чтения я использую датчик влажности

, 👍1

Обсуждение

вы забыли задать вопрос .. вы также забыли сообщить нам, если у вас возникла какая-то проблема, @jsotola

@jstola: «Я могу заставить программу работать, но * срабатывает только один раз, когда она должна быть постоянно включена *» (выделено мной), @JRobert


1 ответ


1

Насколько я понимаю, реле будет оставаться включенным, когда val меньше или равно 500, и оставаться выключенным, когда val выше 500.

Однако может возникнуть проблема, если val продолжает быстро двигаться около 500; он будет включаться и выключаться довольно быстро.

Чтобы предотвратить это, вы должны сделать два «триггера», например включить его, когда значение <= 480, и выключить, когда значение >= 520. Когда оно находится между 480 и 520, оно не изменится. . Это вызовет менее быстрые изменения реле. Конечно, если начальное значение уже находится между 480 и 520, вам придется сделать выбор самостоятельно.

,