Однократная операция сложения при изменяющейся переменной
- Войдите на сайт для отправки комментариев
Вс, 17/07/2016 - 10:15
Уважаемые, подскажите.
Имеется задача.
Энкодер является электронной линейкой. При нажатии на кнопку "откат" необходимо отъехать в определённую сторону к примеру на 20мм (р3) от текущего положения.
Если М всегда изменяется.
р3 всегда неизмена = 20.
введём переменную N.
if(buttonState14 == LOW && flag5 == 0) {
flag5 = 1;
}
N=M+p3;
if(flag5 == 1 && N>M){
digitalWrite(Relay2, HIGH);
}
if(flag5 == 1 && (N==M)){
flag5 = 0;
}
Понятно, что в данном случае N будет стремиться к бесконечности постоянно выполняя операцию N=M+p3
Извиняюсь, разобрался. Сам втупил:
if(buttonState14 == LOW && flag5 == 0) { N=M+p3; flag5 = 1; } if(flag5 == 1 && N>M){ digitalWrite(Relay2, HIGH); } if(flag5 == 1 && (N==M)){ flag5 = 0; }Вынес за пределы функции обработки нажатия кнопки и думаю, что не так.