I have been having trouble with my Hybrid mode setup. I’m not sure what exactly is the problem, but I have been led to believe it is my sometimes flawed programming. :o (See my other posts if you don’t believe me). I am using the provided IR board, and with a regular IR remote setup, for a VCR remote. The outputs are (supposedly) wired into Digital In/Out ports #1-4, and the IR board is receiving power.
Here is my code (it’s a bit un-simplified, so propagators of KISS please don’t complain too much)
/* Some globals: */
unsigned char offsensor1;
unsigned char offsensor2;
unsigned char offsensor3;
unsigned char offsensor4;
/* Initialize */
void Initialize(void)
{
InitIRSensor();
/* ... */
}
/* InitIRSensor */
void InitIRSensor(void)
{
offsensor1 = GetDigitalInput(1);
offsensor2 = GetDigitalInput(2);
offsensor3 = GetDigitalInput(3);
offsensor4 = GetDigitalInput(4);
}
/* Autonomous */
void Autonomous(void)
{
unsigned char irsensor1;
unsigned char irsensor2;
unsigned char irsensor3;
unsigned char irsensor4;
int action = 0;
while( IsAutonomous() )
{
irsensor1 = GetSensorInput(1);
irsensor2 = GetSensorInput(2);
irsensor3 = GetSensorInput(3);
irsensor4 = GetSensorInput(4);
if ((irsensor1 + irsensor2 + irsensor3 + irsensor4) >= 2)
{
action = 0;
}
else if (irsensor1)
{
action = 1;
}
else if (irsensor2)
{
action = 2;
}
else if (irsensor3)
{
action = 3;
}
else if (irsensor4)
{
action = 4;
}
else
{
action = 0;
}
HybridAction(action);
}
}
/* GetSensorInput */
unsigned char GetSensorInput(int sensorPort)
{
unsigned char value;
switch(sensorPort)
{
case 1:
{
value = offsignal1;
break;
}
case 2:
{
value = offsignal2;
break;
}
case 3:
{
value = offsignal3;
break;
}
case 4:
{
value = offsignal4;
break;
}
}
return(GetDigitalInput(sensorPort) == value);
}