IR not changing state or var

Hello everybody! I have an interesting dilemma!

I have mapped the IR board to Digital Input 1-4 on the RC, and called these to be read in Autonomous.

Now, When a button is pressed on the remote in Hybrid, the status of the variable won’t change. Though if I am holding the button and reset the robot the variable changes?!:confused:

I do not believe that Autonomous is being called after the first routine. As in, I think it’s just doing the default and kicking out, rather than looking for the variable.

I am including the code for the autonomous (I program in EasyC and am using the code box on the right to copy this, by hand, my laptop has not network.) I only copied 1 output code, the others are copied from the “IF (Out0 =1)” block, and modified for their function

#include "Main.h"

void Autonomous (void)
{
unsigned char Out0 = 0 //IR Output 0
unsigned char Out1 = 0 //IR Output 1
unsigned char Out2 = 0 //IR Output 2
unsigned char Out3 = 0 //IR Output 3
signed char count = 0 //Smart Counter

while (1 == 1)
{
  Out0 = GetDigitalInput (1);
  Out1 = GetDigitalInput (2);
  Out2 = GetDigitalInput (3);
  Out3 = GetDigitalInput (4);

  if (Out0 = 0)
  {
    if (Out1 = 0)
    {
      if (Out2 = 0)
      {
        if (Out3 = 0)
        {
          // ADD DRIVE CODE HERE
          for (count; count = 0; count ++)
          {
            Wait (300);
          }
          for (count; count = 1; count ++)
          {
            Wait (200);
          }
          for (count; count = 2; count ++)
          {
            Wait (200);
          }
          for (count; count = 3; count ++)
          {
            Wait (200);
          }
          for (count; count = 4; count ++)
          {
            Wait (1500);
          }
          for (count; count = 5; count ++)
          {
            Wait (500);
          }
          for (count; count = 6; count ++)
          {
            Wait (500);
          }
          for (count; count = 7; count ++)
          {
            //STOP HERE!
          }
        }
      }
    }
  }
  if (Out0 ==1) //Button 1 pressed
  {
    Out1 = 0;
    Out2 = 0;
    Out3 = 0;
    SetDigitalOutput (15, 1) // LED1 ON
    SetDigitalOutput (16, 0) //LED2 OFF
    SetDigitalOutput (17, 0) // LED 3 OFF
    SetDigitalOutput (18, 0) //LED4 OFF
    if (count <=3)
    {
      //SET RELAYS OFF!!!
      count = 4;
    }
   else
   {
      count = count;
    }
    break;
  }
}
//COPY OUT0 AND MODIFY FOR OTHER MODES

// END AUTO
}


I would like to help but I can not understnd what your code is supposed to do, could you clarify it?

Your first few if statements are setting variables to zero instead of testing for being equal to zero. Replace the = 0 with == 0 to fix that.

I don’t understand what the for statements are supposed to be doing. The initialization does nothing, and I suspect you’ve made the same = vs. == error in the continuation check.

Thanks.

The FOR statements are only to keep the counter time.

There is a 7-step autonomous that can be interrupted by the IR commands. The counter is so it can pick up where it left off.

Otherwise, I’ll change the operators and cross my fingers!

You are probably correct, I can’t believe I missed that. Everyone makes mistakes.

I’m sure pretty your while loop isn’t going to do anything because auto gets called in main.c every 26ms or so. so even though you are trying to get stuck in the while loop with 1==1, your not stuck because auto will just get called again.

I’m not entirely sure, but I think this is one problem. (I’m kinda new at this)

BHOP - easyC / WPILIB will only call the autonomous() function once when the field switches. Also, everything you do in easyC / WPILIB runs at full speed in the user processor. So, his while(1==1) will loop as fast as it can. Any commands going to the Master Processor ex. PWM/OI will sync every 26ms due to the nature of how the master processor is programmed by IFI. But, in this case all the inputs are tied directly to the user processor so the 26ms loop doesn’t apply.

thanks for that info…i’ve never tried easyc