Log in

View Full Version : Joystick Button Press


dboisvert
06-03-2009, 20:07
I am trying to accomplish a simple button task. When someone pushes a button I want it to keep doing the action (IE In this case "Relay Forward" & "Relay Reverse") until the microswitch is activated. Right now it stops as soon as you release the button.


What the code looks like right now is this

if button1 == 1 & microswitch1 = 0
Relay Forward
else if button2 == 1 & microswitch2 = 0
Relay Reverse
else
Relay Off


Any suggestions?

byteit101
06-03-2009, 21:16
I am trying to accomplish a simple button task. When someone pushes a button I want it to keep doing the action (IE In this case "Relay Forward" & "Relay Reverse") until the microswitch is activated. Right now it stops as soon as you release the button.


What the code looks like right now is this

if button1 == 1 & microswitch1 = 0
Relay Forward
else if button2 == 1 & microswitch2 = 0
Relay Reverse
else
Relay Off


Any suggestions?
int dir=0;//at the top
...
loop//your while loop
..
if (button1 ==1 && !(microswitch1==1))//if button1 pressed and microsw ! pressed
dir=1;
else if (button2==1 && !(microswitch2==1))//if button2 pressed and microsw ! pressed
dir=-1;
else if (microswitch1 ==1 || microswitch2 ==1)//if microsw pressed
dir=0;
//otherwise do nothing to the value
relay.Set((float)dir);//set the new (or old )value
...
end loop
...

The Lucas
06-03-2009, 21:21
I am trying to accomplish a simple button task. When someone pushes a button I want it to keep doing the action (IE In this case "Relay Forward" & "Relay Reverse") until the microswitch is activated. Right now it stops as soon as you release the button.


What the code looks like right now is this

if button1 == 1 & microswitch1 = 0
Relay Forward
else if button2 == 1 & microswitch2 = 0
Relay Reverse
else
Relay Off


Any suggestions?

Try this:

if (button1 == 1 && microswitch1 == 0)
Relay Forward
else if (button2 == 1 && microswitch2 == 0)
Relay Reverse
else (0 == microswitch1 || 0 == microswitch2)
Relay Off

= is the assignment operator and "microswitch = 0" sets microswitch to the value of 0 is always is true. You need to use == which is conditional equals

It is a best practice to write the statement 0 == microswitch so the compiler can catch the mistake (0=microswitch is an error)

Also it is better to use a logial and (&&) rather than a bitwise and (http://en.wikipedia.org/wiki/Bitwise_operation) (&) since the bitwise and will not work in all situations (2 & 1 =false)

dboisvert
06-03-2009, 22:20
Im aware of the proper syntax but I probably should have said it was more of a "Pseudo-Code"

dboisvert
06-03-2009, 23:30
flipperdoor->Set(Relay::flipperset);

I get an error that says "flipperset is not a member of Relay"

The Lucas
07-03-2009, 04:15
flipperdoor->Set(Relay::flipperset);

I get an error that says "flipperset is not a member of Relay"

You have to use

flipperdoor->Set(Relay::kForward);
OR
flipperdoor->Set(Relay::kReverse);
OR
flipperdoor->Set(Relay::kOff);

dboisvert
07-03-2009, 11:09
What I believe I am trying to accomplish is setting it outside of the loop. So basically store a variable and set it to that variable later.

Initial Decleration of flipperset (unsure if that will work)

Relay::Value flipperset;

sets flipperset to shut the relay off
flipperset = Relay::kOff;

If statements to change the flipperset variable
if (m_leftStick->GetRawButton(5) == 1 && flipperdoorright->Get() == 0 ) {
flipperset = Relay::kForward;
} else if (m_leftStick->GetRawButton(4) == 1 && flipperdoorleft->Get() == 0 ){
flipperset = Relay::kReverse;
} else if (flipperdoorleft->Get() == 1 || flipperdoorright->Get() == 1) {
flipperset = Relay::kOff;
}



Final set of flipperdoor to a certain variable
flipperdoor->Set(flipperset);