Beispiel #1
0
void setDutyCycle(char DC, uchar motor)
{
   if(motor==Left)
      SetLeftMotor(DC); 
   else                                          
      SetRightMotor(DC);
}
Beispiel #2
0
void handleCommMessage(void){
	char buffer[COMM_BUFFER_SIZE];
	unsigned char function_code = 0;
	long i;
	buffer[64]=0;
	buffer[79]=0;
	UARTgets((uint8*)buffer, COMM_BUFFER_SIZE);
	//UARTgetMessage(buffer);
	
	//UARTprintf("MESSAGE GET!!%s\r\n", buffer);

	if(isValidMessage(buffer))
	{
		for(i = 0; i < CODE_LENGTH; i++) //generate hash of function code
		{
			function_code ^= buffer[CODE_START + i];
		}

		switch(function_code)
		{
			case SPLM: 	//JoystickXOut(SATURATE(atoi(&buffer[DATA_START]),0,255));
					   	//UARTprintf("GOOD MESSAGE- SVXA: %s\r\n", buffer);
						SetLeftMotor(SATURATE(atoi(&buffer[DATA_START]),-128,127));
					   	VelCtrlRunning = 0;
					  	ResetWatchdog(); //we got a valid message, so they are still talking to us
					   	break;
			case SPRM: 	//JoystickYOut(SATURATE(atoi(&buffer[DATA_START]),0,255));
					   	//UARTprintf("GOOD MESSAGE- SVYA: %s\r\n", buffer);
					   	SetRightMotor(SATURATE(atoi(&buffer[DATA_START]),-128,127));
					   	VelCtrlRunning = 0;
					   	ResetWatchdog(); //we got a valid message, so they are still talking to us
					   	break;
			case SAHS:  SetHokuyoServo(SATURATE(atoi(&buffer[DATA_START]),-128,127));
						break;
			case SVLX: 	UpdateLinearX(atoi(&buffer[DATA_START]));
					   	ResetWatchdog();
					   	VelCtrlRunning = 1;
					   	break;
			case SVAZ: 	UpdateAngularZ(atoi(&buffer[DATA_START]));
					   	VelCtrlRunning = 1;
					   	ResetWatchdog();
					   	break;
			case ETFM: 	EnableSensorFeedbackMessages = 1;
					  	break;
			case DTFM: 	EnableSensorFeedbackMessages = 0;
					   	break;
			case RSTE: 	ResetEncoders();
					   	break;
			case STMR: 	if(1000 % atoi(&buffer[DATA_START]) == 0)
						    SetMessageRate(atoi(&buffer[DATA_START]));
						else
							UARTprintf("INVALID MESSAGE RATE (1000%rate must = 0): %s", buffer);
						break;
			case SETT:	SetTime(atoi(&buffer[DATA_START]));
						break;
			case EHST:	EnableHokuyoTilting();
						break;
			case DHST:	DisableHokuyoTilting();
						break;
			case SHTR: 	if(1000 % atoi(&buffer[DATA_START]) == 0)
						    SetHokuyoTiltRate(atoi(&buffer[DATA_START]));
						else
							UARTprintf("INVALID RATE (1000%rate must = 0): %s", buffer);
						break;
			case SACD:  SetAccelDivisor(atoi(&buffer[DATA_START]));
						break;
			/*case FLPC:	Servo_0_WriteCompare1(atoi(&buffer[DATA_START]));
						break;
			case FRPC:	Servo_0_WriteCompare2(atoi(&buffer[DATA_START]));
						break;*/
			default:   	UARTprintf("UNRECOGNIZED MESSAGE: %s\r\n", buffer);
					   	break;
		}
	}
	else
	{
		UARTprintf("INVALID START CHARACTER: %s\r\n", buffer);
	}
}
Beispiel #3
0
void WatchdogTimeout(void){
	SetLeftMotor(0); //stop the bot
	SetRightMotor(0);
	VelCtrlRunning = 0;
	Err_LED_1_Write(1);
}