Состояние выводов при подаче питания

Ilya84
Offline
Зарегистрирован: 27.10.2020

Доброго времени суток!

Вопрос такой, есть схема управления воротами:

1. Arduino Uno;

2. Модуль реле из 4 реле;

3. Кнопки открыть, закрыть, стоп.

Логика работы такая, при нажатии на кнопку открыть/закрыть включается двигатель и работает до срабатывания концевика.

Проблема в следующем, при подаче питания оба реле включаются враз, после нажатия на кнопку стоп всё начинает работать как задумано, до следующего выключения питания. Не могу понять в чем причина.

const int RO    =   8;
const int RC    =   9;
const int buttonO =   2;
const int buttonC =   3;
const int buttonS =   4;
 
void setup() {
  Serial.begin(9600);
  pinMode (buttonO, INPUT_PULLUP);
  pinMode (buttonC, INPUT_PULLUP);
  pinMode (buttonS, INPUT_PULLUP);
  pinMode (RO, OUTPUT);
  pinMode (RC, OUTPUT); 
}  
void loop () {
if (digitalRead(buttonO) == LOW)
  {
  digitalWrite(RO, HIGH);
  digitalWrite(RC, LOW);
  }
if (digitalRead(buttonC) == LOW)
  {
  digitalWrite(RC, HIGH);
  digitalWrite(RO, LOW);
  }
if (digitalRead(buttonS) == LOW)
  {
  digitalWrite(RC, HIGH);
  digitalWrite(RO, HIGH);
  }
}


  

 

b707
Offline
Зарегистрирован: 26.05.2017

Ilya84 пишет:

Не могу понять в чем причина.

в том что у вас реле управляются низким уровнем, то есть при подаче питания на управляющий пин реле выключено, при подключении GND - включено

Это следует из вашего кода кнопки Стоп

if (digitalRead(buttonS) == LOW)
  {
  digitalWrite(RC, HIGH);
  digitalWrite(RO, HIGH);
  }

А теперь смотрите на последние строчки  в Setup:

pinMode (RO, OUTPUT);
pinMode (RC, OUTPUT);

Эти строки равносильны подаче на реле управляющего LOW -  поэтому-то реле при перехагрузке включаются.

Добавьте в Setup строчки из кода кнопки Стоп, чтобы реле после старта были выключены

 

Ilya84
Offline
Зарегистрирован: 27.10.2020

Спасибо. Теперь всё работает.