Ok one problem

When creating my code for the Autonomous mode, i’m running into a problem with making a counter of some sort so i can change directions or perform actions during the mode. I thought i’d try setting up one like most other languages time = time + 1 << thats how i know how to do it, its plan and simple. I’ve not had too much experiene with PBASIC but there must be another way.

Also my if statments sorta go like this, are they the problem?

if time < (a certain time) then do_a_turn

do_a_turn:
“turn code”

if theres something wrong with that lemme know too. I’m probly doing something really dumb, but its a big problem we’re having.
thanks!

*Originally posted by cantwell03 *
**if time < (a certain time) then do_a_turn

do_a_turn:
“turn code”**

Here’s the problem my friend. No matter what, your code will execute your “turn code.” If the if statement is found to be true, it will jump to do_a_turn, if it is found to be false, then it will just keep going and run into the “turn code” so your code is right except for one thing, you need a goto statement between your if/then and your lable. It would look something like this:

if time < (a certain time) then do_a_turn:
 goto skip_do_a_turn:

do_a_turn:
 "turn code"

skip_do_a_turn:

kinda ugly and confusing, wouldn’t you say? so i prefere an alternate meathod of inverting your ifthen statements, which would look like this:

if time >= (a certain time) then skip_turn:
 "turn code"
skip_turn:

a lot simpler. if you look at it, it does the same as the previous code. In the first one, if the time is greater than the set time, then it would keep going, hit the goto statement, and skip the code. if it were less than, it would jump to the code and preform it. on the seconf one, if it were greater, it would jump to the lable, skipping the “turn code.” if it were less than, it would just keep going and preform the turn. Hope this helps.

-Kesich

assuming you want to use pbasic 2.0 syntax, the easiest way (that I have found) to keep everything straight is to do something like this:


if condition1 then do_condition1
if condition2 then do_condition2
if condition3 then do_condition3
'add else condtion here if necessary
goto end_conditions

do_condition1:
   'condition1 code here
goto end_conditions

do_condition2:
   'condition2 code here
goto end_conditions

do_condition3:
   'condition 3 code here
goto end_conditions

end_conditions:
'increment counter or whatever else you want to do.

doing this allows you to add as many conditions as you want very easily.

this would be equivilent to a nested if…else if…else if…else statement in C.

If you are using PBASIC 2.5, then try using the select / case statements like so:

select (timer)
case 0 to 300
'code to make robot go straight
case 301 to 500
'turning code
'…etc
endselect

that way it will go to the section of code you want, and it stays neat, orderly, and you dont have to mess with a ton and a half of labels :cool: