View Single Post
  Spotlight this post!  
Unread 28-01-2008, 22:09
RyanN's Avatar
RyanN RyanN is offline
RyanN
AKA: Ryan Nazaretian
FRC #4901 (Garnet Squadron)
Team Role: Mentor
 
Join Date: Jun 2006
Rookie Year: 2005
Location: Columbia, SC
Posts: 1,126
RyanN has a reputation beyond reputeRyanN has a reputation beyond reputeRyanN has a reputation beyond reputeRyanN has a reputation beyond reputeRyanN has a reputation beyond reputeRyanN has a reputation beyond reputeRyanN has a reputation beyond reputeRyanN has a reputation beyond reputeRyanN has a reputation beyond reputeRyanN has a reputation beyond reputeRyanN has a reputation beyond repute
Re: Wiring the IR Receiver

Quote:
Originally Posted by chattycat14 View Post
Under the online window it changes from 0 to 1 when the button is pressed, but when the actual program is downloaded it retains the value of 1.
Online window??? Anyway, here is the code we're using. It has some safety built in, and shows the state on the OI.

Code:
//Variables should be declared at the beginning at the program
int mode = 0; //Set it to zero so the robot won't move!
int modea;
int irerror;
int errorloop;



//Switches off all the LEDs on the OI
Switch1_LED = 0;
Switch2_LED = 0;
Switch3_LED = 0;
Relay1_red = 0;
Relay2_red = 0;
Relay1_green = 0;
Relay2_green = 0;
Pwm1_green = 0;
Pwm2_green = 0;
Pwm1_red = 0;
Pwm2_red = 0;
/*The following code will check to make sure the IR sensor is not malfunctioning, 
or it is not disconnected, as no more than one button can be triggered at a time.*/
mode = 0; //If there is no signal from the IR board later in the code, then disable the robot
irerror = 1;
if ((rc_dig_in03 + rc_dig_in04 + rc_dig_in05 + rc_dig_in06) < 3) 
{ 
	irerror = 0; //Tells the disable program that there is no error detected
	if (rc_dig_in03 == 1)
	{
		modea = 1;	//Set to Mode 1 (1st button)
	}
	if (rc_dig_in04 == 1)
	{
		modea = 2;	//Set to Mode 2 (2nd button)
	}
	if (rc_dig_in05 == 1)
	{
		modea = 3;	//Set to Mode 3 (3rd button)
	}
	if (rc_dig_in06 == 1)
	{
		modea = 0;	//EMERGENCY STOP (4th button)
	}
	mode = modea;
}
//The following are the certain autonomous programs
//Each mode acts like a different program.  

if (mode == 1) //Mode 1
{
	printf("Mode 1 %d\r");
	Switch1_LED = 1;
//Put your custom programming here, this will execute when the first button is pressed			
}




if (mode == 2) //Mode 2
{
	printf("Mode 2 %d\r");
	Switch2_LED = 1;
//Put your custom programming here, this will execute when the second button is pressed
}





if (mode == 3) //Mode 3
{
	printf("Mode 3 %d\r");
	Switch3_LED = 1;
//Put your custom programming here, this will execute when the third button is pressed
}

 


//Leave the following code at the very end of the autonomous cycle, so it is sure to execute when and if it is needed.
if (mode == 0) //EMERGENCY STOP
{
	printf("Mode: Disabled %d\r");
	pwm01 = pwm02 = pwm03 = pwm04 = pwm05 = pwm06 = pwm07 = pwm08 = 127;
  	pwm09 = pwm10 = pwm11 = pwm12 = pwm13 = pwm14 = pwm15 = pwm16 = 127;
	relay1_fwd = relay1_rev = relay2_fwd = relay2_rev = 0;
	relay3_fwd = relay3_rev = relay4_fwd = relay4_rev = 0;
	relay5_fwd = relay5_rev = relay6_fwd = relay6_rev = 0;
	relay7_fwd = relay7_rev = relay8_fwd = relay8_rev = 0;	
	//The following code shows all the red lights
	//on the OI to tell the drivers that the autonomous
	//has been disabled
	Pwm1_red = 1;
	Pwm2_red = 1;
	Relay1_red = 1;
	Relay2_red = 1;
	if (irerror == 1) //If the IR has an error, then flash
	{
		printf("IR Sensor Problem, Check connection %d\r");
		errorloop++;
		if (errorloop > 5)
		{
			Pwm1_red = 0;
			Pwm2_red = 0;
			Relay1_red = 0;
			Relay2_red = 0;
		}
		if (errorloop > 9)
		{
			errorloop = 0;
		}
	}

}
I think I took all of our personal, never to be seen code out, and I think I have all the variables declared in the beginning. I give the right for any team to use this, and I give no warranty. If it does not work, you can PM me, and I can try to help. I will not help with any of your personal programming though.

PS: We have tried this on our robot, and it works great! So I encourage any teams that aren't very programming savvy to try to use this to at least do something.
__________________
Garnet Squadron
FRC 4901
Controls Mentor
@rnazaretian

Previous mentor and student from Team Fusion, FRC 364