1. 7 weeks ago

    meepmeepme

    Nov 28 Honolulu, Hawaii (Saint Louis ... 42700B/C
    if(Controller1.Axis3.value()>15){}

    does not work. How would I go about making a controller deadzone?

    You almost have it right.
    Instead, you need to use the absolute value of the joystick channel.

    if(abs(Controller1.Axis3.value())>15){}

    Alternatively, you can use the ternary operator to make a line like this:

    joystickAxis3 = Controller1.Axis3.value();
    joystickAxis3 = abs(joystickAxis3) > 15 ? joystickAxis3 : 0;

    You could also use an if statement

    joystickAxis3 = Controller1.Axis3.value();
    if(abs(joystickAxis3) < 15) joystickAxis3 = 0;
  2. theol0403

    Nov 28 Answer Courtenay, BC, Canada 7842F

    You almost have it right.
    Instead, you need to use the absolute value of the joystick channel.

    if(abs(Controller1.Axis3.value())>15){}

    Alternatively, you can use the ternary operator to make a line like this:

    joystickAxis3 = Controller1.Axis3.value();
    joystickAxis3 = abs(joystickAxis3) > 15 ? joystickAxis3 : 0;

    You could also use an if statement

    joystickAxis3 = Controller1.Axis3.value();
    if(abs(joystickAxis3) < 15) joystickAxis3 = 0;
  3. meepmeepme

    Nov 28 Honolulu, Hawaii (Saint Louis ... 42700B/C

    @theol0403 You almost have it right.
    Instead, you need to use the absolute value of the joystick channel.

    if(abs(Controller1.Axis3.value())>15){}

    Alternatively, you can use the ternary operator to make a line like this:

    joystickAxis3 = Controller1.Axis3.value();
    joystickAxis3 = abs(joystickAxis3) > 15 ? joystickAxis3 : 0;

    You could also use an if statement
    joystickAxis3 = Controller1.Axis3.value(); if(abs(joystickAxis3) < 15) joystickAxis3 = 0;

    in terms of responsiveness, which method would you reccomend? I remember on the old robotc we used an if statement

  4. theol0403

    Nov 28 Courtenay, BC, Canada 7842F

    They all do the exact same, and there is not much of a difference, but I prefer the ternary approach, as it allows for some good code neatness.

    const int deadZone = 15;
    int joystickAxis3 = 0;
    int joystickAxis1 = 0;
    while(true)
    {
        joystickAxis3 = Controller1.Axis3.value();
        joystickAxis1 = Controller1.Axis1.value();
        joystickAxis3 = abs(joystickAxis3) > deadZone ? joystickAxis3 : 0;
        joystickAxis1 = abs(joystickAxis3) > deadZone ? joystickAxis1 : 0;
        setBasePower(joystickAxis3 + joystickAxis1, joystickAxis3 - joystickAxis1);
        sleep(20);
    }
  5. meepmeepme

    Nov 28 Honolulu, Hawaii (Saint Louis ... 42700B/C

    @theol0403 They all do the exact same, and there is not much of a difference, but I prefer the ternary approach, as it allows for some good code neatness.
    const int deadZone = 15; int joystickAxis3 = 0; int joystickAxis1 = 0; while(true) { joystickAxis3 = Controller1.Axis3.value(); joystickAxis1 = Controller1.Axis1.value(); joystickAxis3 = abs(joystickAxis3) > deadZone ? joystickAxis3 : 0; joystickAxis1 = abs(joystickAxis3) > deadZone ? joystickAxis1 : 0; setBasePower(joystickAxis3 + joystickAxis1, joystickAxis3 - joystickAxis1); sleep(20); }

    I think I understand now, thank you! What coding studio are you guys using? Thinking about swapping to RMS because the other coder and I use multiple devices, but cell connection can be spotty in Hawaii and we've had to change things at comps in the past.

  6. theol0403

    Nov 28 Courtenay, BC, Canada 7842F

    I am an avid PROS user, but I understand that it can be a bit daunting and confusing for beginners.
    I would recommend RMS over VCS for sure.
    If you do choose to try PROS, it is worth it to read through this excellent tutorial series www.learncpp.com
    Good luck!

 

or Sign Up to reply!