проверить статус реле

foxmania
Offline
Зарегистрирован: 22.11.2018

Приветствую,
столкнулся с проблемой проверки модуля реле ардуино,
когда на пине реле Vin 5в реле выключено,
а когда 0в и горит красный - реле работает,
в момент подключения и проверки реле, как только трогаю контакт, реле включается и нарушает работу цикла,
я хотел просто "слушать" доп. проводом с аналогового или цифрового пина - контакт реле Vin или снизу платы модуля реле припаяться к контакту,
это чтоб сделать проверку нужно сделать изменения в коде и инвертировать соединение на самом реле?
Тогда у меня будет пине Vin при 5в будет включено и при 0 выключено?

А если б управлял реле (не модулем), например на 12В, от транзистора таких проблем не было б?

Моя схема: с цифрового или аналогового пина идёт провод на пин реле и провод на резистор и землю,
проверяю есть ли после выключения реле на нем напряжение.

Спасибо.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Дык прочитайте состояние пина реле digitalRead(). И проверьте свою схему и нормально пропаяйте. Электроника - это наука о контактах - есть, где не надо или нет, где надо...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Схему давайте. И фото сборки.

Гриша
Offline
Зарегистрирован: 27.04.2014

как писано выше - схему и фото как это делать читаем тут(все в первых постах). Как можно понять из описания, у вас сразу несколько проблем - вы не понимаете как это работает и как должно работать. 

foxmania
Offline
Зарегистрирован: 22.11.2018
void setup() {
  Serial.begin(9600);
  pinMode(4, INPUT); //   4 пин читает состояние 10 пина
  pinMode(10, OUTPUT); // пин реле Vin
}
void loop() {
  int sensorVal = digitalRead(4);
​
    digitalWrite(10, LOW); // вкл реле
    Serial.println(sensorVal);
    delay(2000);
    digitalWrite(10, HIGH); // выкл реле
    Serial.println(sensorVal);
    delay(2000);
    }

Мой код для теста и проблема в данный момент - В сериал порт приходит постоянно единица, если порт 4 и 10 соединены проводом. В случае с analogRead брал резистор на землю и показания были или ноль или цифры до 1023, а в случае с digitalRead он не выдает мне "0" пауза 2сек - "1" пауза 2сек

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020
4 пин читает состояние 10 пина

Блин, а зачем так-то? Неужели нельзя сразу считывать с десятого пина?

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

foxmania пишет:
а в случае с digitalRead он не выдает мне "0" пауза 2сек - "1" пауза 2сек

Вы считываете его состояние всего один раз, и при этом хотите, чтобы переменная sensorVal сама меняла свое значение? Оригинально ))

v258
v258 аватар
Offline
Зарегистрирован: 25.05.2020

Попробуйте вот так

void loop() {
    digitalWrite(10, LOW); // вкл реле
    Serial.println(digitalRead(4));
    delay(2000);
    digitalWrite(10, HIGH); // выкл реле
    Serial.println(digitalRead(4));
    delay(2000);
    }

 

foxmania
Offline
Зарегистрирован: 22.11.2018

Это сделано для внешней проверки, проверка с другого контакта который независим от пина 10
если б реле было не модульным, а просто отдельно реле на 5-12В,
то снимал бы показания на вольты на самом реле, и если происходит клин реле или баг и реле продолжает работать,
делал бы перезагрузку

насколько понимаю возможно, в setup мне нужно обьявить пин 4 как high или low,
и ловить состояние реле
пробовал  через резистор но там опять только  или одни 0 или только 1

foxmania
Offline
Зарегистрирован: 22.11.2018

проблема найдена, спасибо всем откликнувшимся :)