Top.Mail.Ru
Ответы

Где ошибка в коде ардуино?

Почему то она сразу даёт сигнал на 10 и 11 пин, даже когда выключатель в нейтрали, прозвонил всё, переключатель верно поставил. Использую для управления реле

12345678910111213141516171819202122232425262728293031323334
 int switchPin = 5; // первый пин, к которому подключен переключатель 
int switch2Pin = 6; // второй пин, к которому подключен переключатель 
int relay1Pin = 10; // пин, к которому подключено первое реле 
int relay2Pin = 11; // пин, к которому подключено второе реле 
 
void setup() { 
  pinMode(switchPin, INPUT); // устанавливаем первый пин с переключателем на вход 
  pinMode(switch2Pin, INPUT); // устанавливаем второй пин с переключателем на вход 
  pinMode(relay1Pin, OUTPUT); // устанавливаем пин первого реле на выход 
  pinMode(relay2Pin, OUTPUT); // устанавливаем пин второго реле на выход 
} 
 
void loop() { 
  int switchState = digitalRead(switchPin); // считываем состояние первого пина с переключателем 
  int switch2State = digitalRead(switch2Pin); // считываем состояние второго пина с переключателем 
 
  if (switchState == HIGH) { // проверяем, включен ли переключатель 
    digitalWrite(relay1Pin, LOW); // выключаем первое реле 
    digitalWrite(relay2Pin, LOW); // выключаем второе реле 
  } 
  else if (switch2State == HIGH) { // если переключатель в положении открыто 
    digitalWrite(relay1Pin, HIGH); // включаем первое реле 
    digitalWrite(relay2Pin, LOW); // выключаем второе реле 
  } 
  else if (switchState == LOW && switch2State == LOW) { // если переключатель в положении закрыто 
    digitalWrite(relay1Pin, LOW); // выключаем первое реле 
    digitalWrite(relay2Pin, HIGH); // включаем второе реле 
  } 
  else { // если переключатель в неопределенном состоянии 
    digitalWrite(relay1Pin, LOW); // выключаем оба реле 
    digitalWrite(relay2Pin, LOW); 
  } 
} 
 
По дате
По рейтингу
Аватар пользователя
Мудрец

Если вы используете переключатель без подтяжки, то вам необходимо использовать встроенные подтягивающие резисторы на пинах переключателя. Вы можете сделать это, заменив pinMode(switchPin, INPUT) и pinMode(switch2Pin, INPUT) на pinMode(switchPin, INPUT_PULLUP) и pinMode(switch2Pin, INPUT_PULLUP) соответственно.

Аватар пользователя
Мудрец

По умолчанию на выходе "1", вот у тебя релюшки и щёлкают, как только ты порт на выход конфигурируешь.

Аватар пользователя
Профи

digitalWrite(relay2Pin, LOW); здесь

Аватар пользователя
Ученик

Можешь исправить пожалуйста?

Аватар пользователя
Ученик

А сколько стоит ардуино

Аватар пользователя
Ученик

на 73 градуса по фаренгейту



Видео по теме