Can someone help me with my p loop i cant find out what im doing wrong the code is below
int tilterPControl = ButtonR1 + 100(-1(Lift.rotation(degrees)/1.58));
Lift.spin(fwd,100,tilterPControl);
The errors are here
called object type ‘int’ is not a function or function pointer
no matching member function for call to ‘spin’
Deicer
November 25, 2019, 4:41pm
#2
What is the range of values for ‘buttonR1’? If its boolean then you are trying to add a double and a bool which won’t work
the R1 value is supposed to be the input but i don’t really understand how to write a p loop in vexcode so that’s why i am confused on how to write it
And I haven’t found any resources on how to write it in vexcode
Deicer
November 25, 2019, 5:17pm
#5
Which is why I sent the link in the other thread. Try something like this:
Double power;
If(buttonpressing){
power = (target - current)*constant);
}
Else{
Power = 0;
}
well i looked into it and that’s similar to what i wrote its just that part of code that is having the issue
this is how mine is set up below
if(Controller.ButtonR1.pressing()) {
int LiftPControl = Lift + 100(-1(Lift.rotation(rev)/1.58));
Lift.spin(fwd,100,LiftPControl);
}
else if(Controller.ButtonR2.pressing()) {
Lift.spin(vex::directionType::rev, 200, vex::velocityUnits::pct);
} else {
Lift.stop(vex::hold);
}
For the first Lift.spin line, LiftPControl should go in the second parameter and pct/rpm should be in the 3rd parameter
Ok 1 of the 2 problems solved now this line still has an error:
int LiftPControl = Lift + 100(-1(Lift.rotation(rev)/1.58));
The error states that the called object type ‘int’ is not a function or function pointer and the red area on the code is at the start of the 2nd parenthesis
What is “Lift” in your code
the lift is just the tray lift motor
Lift doesn’t mean anything by itself so it is producing an error in your code, try removing it
still the same error
int LiftPControl = (-1(Lift.rotation(rev)/1.58));
----------------------- ^
the arrow is where the error is
Try changing the int to double and add a multiplication sign in between -1 and (Lift.rotation(rev)/1.58)
Ok it worked thank you so much there is just little to no reference on p loops for vexcode and i really appreciate your help
introduction_to_pid_controllers_ed2.pdf (400.2 KB)
P loops isnt only specific to VexCode so that’s why there’s nothing in VexCode that references P loops. The PDF I uploaded is one of my favorite documents for learning P loops (and PID)
The problem here was that when you tried to do implicit multiplication without the * symbol, the compiler interpreted that as you calling a function, as that is the same syntax as you would use to call a function that was named “100”
1 Like
well yea but i didnt find an exact way on how to set it up
Most everyone struggles with accurate base control in auton. At the highest level, 5225 developed a 3 tracking wheel solution that allowed them to set the world record in programming skills last year, and a handful of teams including 8059 and 139 have replicated their “odometry” based on a document they released last year. Team 5225 Introduction to Position Tracking Document
But at a less extreme level, for people just looking to take a step up from move.relative you may like the base control…
Here’s also a link to a post that contains code with a p loop
1 Like