|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
|||
|
|||
|
Variable question (solved)
OK i'm going to be sitting by my computer refreshing every 30 seconds checking for reply
In file user_routines.c, under /***DEFINE USER VARIBLES AND INITIALIZE THEM HERE ***/ I added: static unsigned int bob = 2; ------------------------------------------------------------ ------------------------------------------------------------ Now under the: Void Default_Routine(void) { if(bob == 2 && p1_sw_trig){bob = 0;} if(bob == 0 && p1_sw_trig){bob = 1;} if(bob == 1 && p1_sw_trig){bob = 0;} } ------------------------------------------------------------ ------------------------------------------------------------ Before I click on the trigger, I get the value 2 for bob... Click on it once, I get 0 click on it again I get 0(it's suppose to change to 1) WHAT AM I DOING WRONG!?!!? Please help! Last edited by Calvin : 03-02-2006 at 22:26. |
|
#2
|
||||
|
||||
|
Re: Beginning programmer: Variable question HELP!!!
Your problem is that you set bob to 1 and then check to see if it is 1 and the button is pressed and set it back to 0.
Code:
if(bob == 2 && p1_sw_trig)
{
bob = 0;
}
/** assuming bob == 0, bob is set to 1 ****/
if(bob == 0 && p1_sw_trig)
{
bob = 1;
}
/** bob is now 1 and gets set to 0 ****/
if(bob == 1 && p1_sw_trig)
{
bob = 0;
}
/*** bob is always 0 if the trigger has been pressed ***/
Code:
static unsigned int bob = 2;
Void Default_Routine(void)
{
if(bob == 2 && p1_sw_trig)
{
bob = 0;
}
else if(bob == 0 && p1_sw_trig)
{
bob = 1;
}
else if(bob == 1 && p1_sw_trig)
{
bob = 0;
}
}
This is because there is no way that you as a user will be able to tap the trigger for 1 loop (1/42 of a second) and the trigger will actually be pressed for multiple loops. What I think you want to do is keep track of the previous button state and only change states if your current state is pressed and your previous is not. |
|
#3
|
|||
|
|||
|
Re: Beginning programmer: Variable question HELP!!!
Quote:
Quote:
Last edited by RIgnazio : 03-02-2006 at 18:11. |
|
#4
|
||||
|
||||
|
Re: Beginning programmer: Variable question HELP!!!
It takes about 400 to 600 nanoseconds (maybe a bit more) for the three IF statements to execute. You cannot hit the trigger fast enough to satisfy only one IF statement.
The first time through, bob goes from 2 to 0. The next time though, bob goes from 0 to 1 to 0. The code is doing exactly what you told it to do... Regards, Mike |
|
#5
|
|||
|
|||
|
Re: Beginning programmer: Variable question HELP!!!
wow thanks for the quick reply,
I figured out a way to do it with two buttons. Now it works fine. I completely forgot about the quick loop, and started questioning my programming skills. ![]() PHP Code:
Last edited by Calvin : 03-02-2006 at 22:29. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| VEX programming | Gene F | Programming | 14 | 08-08-2006 22:21 |
| Printf Oddity : Programming Challange | DarkAlex | Programming | 7 | 21-03-2005 08:12 |
| have a question to ask about Double Solenoids to one spike programming | davelu | Programming | 3 | 22-02-2005 09:52 |
| General programming question | mikesown | Programming | 1 | 07-02-2005 16:09 |
| 'Fix It Window' and Programming.... | JMac | Programming | 19 | 25-01-2005 18:57 |