Stap 8: Het schrijven van een autonome
U heeft het afgelegd met een van de moeilijkste onderdelen in dit Instructable, schrijven de autonome. Voordat u begint zelfs een autonome, worden ervoor dat al uw motoren en de sensoren zijn aangesloten, en setup naar behoren in de code. Als je een autonome voor een competitie schrijft, zou ik aanbevelen een vogel-oog mening foto van het veld, en schetsen van het pad dat u wilt dat de robot te nemen.
Voor dit autonome, gaan we aan de stok met een zeer eenvoudige code, maar alles wat je hier leert kan worden gebruikt om een zeer complex en hoog scoren autonome!
Een eenvoudige autonome programmeren:
Laten we zeggen dat ik wil de robot vooruit rijden, draai van 90 graden met de klok mee, verheffen van de lift, en dan rijden achteruit, dit kan gemakkelijk worden gedaan met de functies die u hebt aangebracht!
standardMove(200, 80); // Call the move function, forward for 2 milliseconds at speed 80 standardTurn(900); // Call the turn function, turn 900, or 90 degrees. If you wanted to turn 45 degrees, you would enter 450 standardLift(500, 127); // Lift the lift at full power, for 5 milliseconds standardMove(300, -80); // Move backwards for 3 milliseconds, at speed 80, or -80 in this case
Thats it, zien hoe nuttig deze functies ook kan worden, verandert het verscheidene dozijn coderegels in slechts vier! Zonder autonome functies, zou die code er iets meer uitzien...
motor[BackL] = 80; // Move forward motor[FrontL] = 80; motor[BackR] = 80; motor[FrontR] = 80; wait1Msec(200); motor[BackL] = 0; motor[FrontL] = 0; motor[BackR] = 0; motor[FrontR] = 0; SensorValue[Gyro] = 0; if (SensorValue[Gyro] < 900) { //Turn 90 degrees motor[BackL] = 50; motor[FrontL] = 50; motor[BackR] = -50; motor[FrontR] = -50 wait1Msec(100); motor[BackL] = 0; motor[FrontL] = 0; motor[BackR] = 0; motor[FrontR] = 0; } else if (SensorValue[Gyro] > 900) { motor[BackL] = -50; motor[FrontL] = -50; motor[BackR] = 50; motor[FrontR] = 50; wait1Msec(100); motor[BackL] = 0; motor[FrontL] = 0; motor[BackR] = 0; motor[FrontR] = 0; } else if (SensorValue[Gyro] == 900) { motor[BackL] = 0; motor[FrontL] = 0; motor[BackR] = 0; motor[FrontR] = 0; } else { // Do nothing } motor[BackL] = 127; // Lift up the lift motor[BackR] = 127; motor[TopL] = 127; motor[TopR] = 127; wait1Msec(500); motor[BackL] = 0; motor[BackR] = 0; motor[TopL] = 0; motor[TopR] = 0; motor[BackL] = -80; // Move backwards motor[FrontL] = -80; motor[BackR] = -80; motor[FrontR] = -80; wait1Msec(300); motor[BackL] = 0; motor[FrontL] = 0; motor[BackR] = 0; motor[FrontR] = 0;
Ja... functies gebruiken, het maakt uw taak een stuk gemakkelijker.