Однократная операция сложения при изменяющейся переменной

Lucky_Wolf
Offline
Зарегистрирован: 12.07.2016

Уважаемые, подскажите.

Имеется задача.

Энкодер является электронной линейкой. При нажатии на кнопку "откат" необходимо отъехать в определённую сторону к примеру на 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

Lucky_Wolf
Offline
Зарегистрирован: 12.07.2016

Извиняюсь, разобрался. Сам втупил:

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;  
}

Вынес за пределы функции обработки нажатия кнопки и думаю, что не так.