if (dif >= 20) dir = headingx; помогите разобраться

Тема в разделе "Arduino & Shields", создана пользователем ToxaRU, 3 сен 2015.

  1. ToxaRU

    ToxaRU Гик

    if (dif >= 20) dir = headingx; есть такое условие-если dif больше или равно 20 то dir=headingx... а так как int dif = headingx - dir; то все работает если headingx больше dir...... а если он меньше то получается фиговина...

    Помогите исправить... Как я понимаю нужно чтобы сравнение было через модуль не учитывая знак...но как сделать не соображу
     
  2. DrProg

    DrProg Вечный нерд

    Можно кусок кода побольше? Не понятна предыстория и что делается дальше. Если сперва int dif = headingx - dir; а потом if (dif >= 20) dir = headingx; то все должно работать, а если наоборот, то конечно фиговина.
     
    ИгорьК нравится это.
  3. Unixon

    Unixon Оракул Модератор

    Либо dif = abs(headingx - dir), либо if (abs(dif) >= 20). Ну и лучше писать diff, а не dif :)
     
    ToxaRU нравится это.
  4. ToxaRU

    ToxaRU Гик


    Сына укачаю скины побольше))) оно и работает...но только в одну сторону......то есть пока headingx допустим 100 а dir 20 по условию выйдет 80 оно больше 20 и все ок.... А как только получаетс headingx 20 а dir 100 то получается -80 что меньше 20... Тут то и засада...мне нужно чтобы и обратно работало и поэтому надо как то сделать чтобы в случае получения отрицательного значения знак не учитывался..то есть в формулу не -80 поставлялось а 80... Из школы вспоминаю была такая штука как модуль..но как его в ардуине записать не соображу
     
  5. ToxaRU

    ToxaRU Гик

    сейчас попробую спасибо)))
     
  6. ToxaRU

    ToxaRU Гик

    Спасибо if (abs(dif) >= 20) сработало как надо))))))))