Прошу помощи, код работает не корректно, уже не знаю что делать

  void setup() {
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
}

void loop() {
  pinMode(13, OUTPUT);
   digitalWrite(13, LOW);
  pinMode(12, OUTPUT);
   digitalWrite(12, HIGH);
  if (analogRead(A0) > 512) {
     analogWrite(3, 115);
  }
  if (analogRead(A1) > 512) {
     analogWrite(3, 165);
  }
  if (analogRead(A2) > 512) {
     analogWrite(3, 215);
  }
  if (analogRead(A3) > 512) {
     analogWrite(5, 115);
  }
  if (analogRead(A4) > 512) {
     analogWrite(5, 165);
  }
  if (analogRead(A5) > 512) {
     analogWrite(5, 215);
  }
  if (analogRead(A0) < 512 & (analogRead(A1) < 512 & analogRead(A2) < 512)) {
     analogWrite(3, 0);
  }
  if (analogRead(A3) < 512 & (analogRead(A4) < 512 & analogRead(A5) < 512)) {
     analogWrite(5, 0);
  }

} 

Есть такой код, по идее он должен принимать сигнал на контакты аналоговые и выводить определённый ШИМ на драйвер L298N. В общем регулировка ШИМ работает, но действие происходит параллельно для двух линий. Проблема в том что действие происходящее в коде вторым приводит к какому-то непонятному ШИМ сигналу на выводе( в данном случае 5). Аппаратной проблемой это быть не может, менял уже все компоненты. В чем то могу ошибаться, Только недавно начал работать с ардуино, не судите строго.

А что за ардуина у вас?

логическое “И” пишется двойным &&, а не &

И еще проверьте, верно ли тут стоят скобки.

Arduino Uno

Временно закомментируйте все if() и дайте шим только на один выход.

Эта функция работает и с одиночным &
Скобки стоят верно

Не совсем понял что вы имеете ввиду

а, ну-ну…
Еще один умник.
В игнор сразу

Вы скетч сами писали или срисовали в интернете?

К сожалению, я собирал его через ArduBlock

Я поменял и ничего не изменилось, вау

Это значит что в коде есть еще ошибки. Но логическое “И” пишется так, запомните.

Теперь далее - можете пояснить логику этих операторов:

не многовато ли условий на один выход?

void setup() {
   pinMode(13, OUTPUT);
   digitalWrite(13, LOW);
   pinMode(12, OUTPUT);
   digitalWrite(12, HIGH);
   analogWrite(3, 115);
}

void loop() { }

Если на другом выходе тоже полезет шим, то проблемы в схемотехнике.

Возможно, если я правильно понимаю, то они выполняются последовательно. У меня есть три вывода с другого устройства. Мне нужно получить три разных шима, в зависимости от контакта на который приходит сигнал

Ползёт только на одном

А если сигнал приходит сразу на два контакта?

Кроме того, судя по обьяснению, у вас сигнал или есть или нет…зачем тогда аналоговые входы, почему не цифровые?

Значит проблема в коде - скорее всего на An пляшут черти Максвелла.

Логично, об этом я не подумал

Может в песочницу его перебросить? Тут явно пахнет нубом.

я отказался от полномочий перебрасывать, так что и решать не мне. Как хочешь.