Dette er en snedig bot.

Denne robot har forskellige muligheder, den kan styre uden om forhindringer den ser med sin sonar, og sanse hvis den påkører et objekt som måske er for småt til at sonaren kan se den.
Hvis den bakker op i noget vil den med det samme stoppe med at bakke og gå direkte over til en “ret op” funktion.

Designet bag ved modellen er 80% originalt, det eneste som ikke er originalt er den måde NXT brikken sidder sat sammen med mortorene på.

Fejl ved botten: 

Robotten har problemer styrer hjulenes slør pga. den plastik mortor som sidder der er designed til at kunne “gi” sig lidt.
Når den køre ind i papkasser, kan den ikke aktivere de front følende sensors pga. den er før blød hvis kassen er åben.
Ting som  kontor / kører stole som har en irriterende ben højde som kør at sonaren ikke kan se den og at de front sidende føle sensorer bliver ikke ramt korrekt.

Dette er dens Kode:

#pragma config(Sensor, S1,     touchLeft,      sensorTouch)
#pragma config(Sensor, S2,     touchRight,     sensorTouch)
#pragma config(Sensor, S3,     touchRear,      sensorTouch)
#pragma config(Sensor, S4,     sonar,          sensorSONAR)
#pragma config(Motor,  motorA,          steerMotor,    tmotorNXT, openLoop, reversed, encoder)
#pragma config(Motor,  motorB,          rightMotor,    tmotorNXT, openLoop, reversed, driveRight, encoder)
#pragma config(Motor,  motorC,          leftMotor,     tmotorNXT, openLoop, reversed, driveLeft, encoder)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//



void turnRight()   //turnRight Void "Function"
{
	while (nMotorEncoder[steerMotor] <= 60)
	{
		motor[steerMotor] = 32;
	}
	motor[steerMotor] = 0;
}


void turnLeft()   //turnLeft Void "Function"
{
	while (nMotorEncoder[steerMotor] >= -60)
	{
		motor[steerMotor] = -32;
	}
	motor[steerMotor] = 0;
}


void bakOP()      //bakOP Void "Function"
{
	int	counter = 40;
	while (counter > 0)
	{
		if (SensorValue[touchRear] == 1) break;

		motor[leftMotor] = -35;
		motor[rightMotor] = -35;
		delay(50);
		counter --;
	}
	motor[rightMotor] = 0;
	motor[leftMotor] = 0;
}


void retOP()      //retOP Void "Function"
{

	if (nMotorEncoder[steerMotor] >=60)
	{

		while (nMotorEncoder[steerMotor] > 0)
		{
			motor[steerMotor] = -32;
		}
		motor[steerMotor] = 0;
	}

	if (nMotorEncoder[steerMotor] <=-60)
	{
		while (nMotorEncoder[steerMotor] < 0)
		{
			motor[steerMotor] = 32;
		}
		motor[steerMotor] = 0;
	}
}




task main()               // task Main for INT
{
	nMotorEncoder[steerMotor] = 0;

	int toggle = 1;
	int toggled = 1;


	while (true)
	{
		wait1Msec(200);

		eraseDisplay();
		nxtDisplayBigTextLine(1, "%s", "Speed");  // same result with nxtDisplayCenteredBigTextLine()
		nxtDisplayBigTextLine(3, "%d", motor[leftMotor]);  // same result with nxtDisplayCenteredBigTextLine()


		if (   (SensorValue[touchLeft] == 1)    ||    (SensorValue[touchRight] == 1)    ||    (SensorValue[touchRear] == 1)    )
		{


			// touchRight START

			if (SensorValue[touchRight] == 1)
			{
				// touchRight set true, stop motors + turn and reverse/backing up.
				motor[rightMotor] = 0;
				motor[leftMotor] = 0;

				turnLeft();       //   turnLeft Function

				bakOP();          //   bakOP Function

				retOP();          //   retOP Function

			} // touchRight END.


			// touchLeft START
			if (SensorValue[touchLeft] == 1)
			{
				// touchLeft set true, stop motors + turn and reverse/backing up.
				motor[rightMotor] = 0;
				motor[leftMotor] = 0;

				turnRight();      //   turnRight Function

				bakOP();          //   bakOP Function

				retOP();          //   retOP Function

			} // touchLeft END.

			if (SensorValue[touchRear] == 1)
			{

				// touchRear set true, stop motor, pull steer up + move forward.

				motor[rightMotor] = 0;
				motor[leftMotor] = 0;

				retOP();           //   retOP Function

			} // touchRear END


		} // Steering Pull up Start
		else
		{
			if (SensorValue[sonar] >= 100)
			{

				retOP();           // retOP Function

				motor[leftMotor] = 60;
				motor[rightMotor] = 60;

				if (toggled == 0)
				{
					if (toggle == 1)
					{
						toggle = 0;
					}
					else
					{
						toggle = 1;
					}
					toggled = 1;
				}
			} // Steering Pull up END



			// toggle Diraction Start
			if (SensorValue[sonar] < 100)
			{

				motor[leftMotor] = 25;
				motor[rightMotor] = 25;


				if (toggle == 1)
				{
					turnRight();      // turnRight Function
					toggled = 0;

				}
				else
				{
					turnLeft();       // turnLeft Function
					toggled = 0;
				}

			} // toggle Direction END

		} //else END.

	} // while true.
	motor[leftMotor] = 0;
	motor[rightMotor] = 0;
}

Skriv et svar