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). Аппаратной проблемой это быть не может, менял уже все компоненты. В чем то могу ошибаться, Только недавно начал работать с ардуино, не судите строго.
b707
22.Март.2023 17:04:48
3
логическое “И” пишется двойным &&, а не &
И еще проверьте, верно ли тут стоят скобки.
Временно закомментируйте все if() и дайте шим только на один выход.
Эта функция работает и с одиночным &
Скобки стоят верно
Не совсем понял что вы имеете ввиду
b707
22.Март.2023 17:11:16
8
а, ну-ну…
Еще один умник.
В игнор сразу
Вы скетч сами писали или срисовали в интернете?
К сожалению, я собирал его через ArduBlock
Я поменял и ничего не изменилось, вау
b707
22.Март.2023 17:29:22
12
Это значит что в коде есть еще ошибки. Но логическое “И” пишется так, запомните.
Теперь далее - можете пояснить логику этих операторов:
Kitamzaram:
if (analogRead(A0) > 512) {
analogWrite(3, 115);
}
if (analogRead(A1) > 512) {
analogWrite(3, 165);
}
if (analogRead(A2) > 512) {
analogWrite(3, 215);
}
не многовато ли условий на один выход?
void setup() {
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
pinMode(12, OUTPUT);
digitalWrite(12, HIGH);
analogWrite(3, 115);
}
void loop() { }
Если на другом выходе тоже полезет шим, то проблемы в схемотехнике.
Возможно, если я правильно понимаю, то они выполняются последовательно. У меня есть три вывода с другого устройства. Мне нужно получить три разных шима, в зависимости от контакта на который приходит сигнал
b707
22.Март.2023 17:33:41
16
А если сигнал приходит сразу на два контакта?
Кроме того, судя по обьяснению, у вас сигнал или есть или нет…зачем тогда аналоговые входы, почему не цифровые?
Значит проблема в коде - скорее всего на An пляшут черти Максвелла.
Логично, об этом я не подумал
Может в песочницу его перебросить? Тут явно пахнет нубом.
b707
22.Март.2023 17:37:42
20
я отказался от полномочий перебрасывать, так что и решать не мне. Как хочешь.