Stap 6: Het schrijven van een bestuurder-besturingselement
* Klik op afbeelding om te vergroten *
Bij het schrijven van een controle van de bestuurder, u hebt een paar opties, afhankelijk van welke chassis die u hebt ingesteld. Als u een standaard 4 motor rijden, met regelmatige rubberen wielen uitvoert, hebt u twee opties, een tank type station of een aandrijving van de stijl arcade.
Programmeren van een Tank Type station:
Een tank type station gebruikt beide joysticks, links om te bepalen uw twee linker wielen en het recht om controle van uw juiste tweewielers. Dit is waarschijnlijk het meest eenvoudige programma van de schijf te schrijven, maar het is niet erg goed als het gaat om wedstrijden, omdat u wellicht een joystick voor iets anders. Draai de robot naar links, zou u de linker joystick terug, en de juiste joystick vooruit verplaatsen. Dit zou een plek-draai aan waar u het nodig om te doen. U zou het tegenovergestelde doen om rechtsaf. Rijden naar voren heeft beide joysticks vooruit en achteruit beide joysticks achteruit.
Hier is een voorbeeldcode van een tank type station, houd in gedachten dat waarden zou moeten worden veranderd om te passen uw robot.
motor[FrontL] = vexRT[Ch3]; motor[BackL] = vexRT[Ch3]; motor[FrontR] = vexRT[Ch2]; motor[BackR] = vexRT[Ch2];
In deze code zijn we de "motor []" toewijzen aan een joystick op de controller. "vexRT [];" is simpelweg het commando voor de controller, "Ch2" toegewezen welk kanaal van de controller te gebruiken, "Ch2" is de Y-as op de juiste joystick van de controller. Een afbeelding vindt u in de galerie waarin de controller met de kanalen van de joystick. Als u deze code gebruikt, controleert u of u vervangen wat is tussen de "[]", met de naam van uw eigen motoren, maar zorg ervoor dat beide links motoren op hetzelfde kanaal zijn, en dat de juiste motoren zijn beide op hun kanaal.
Programmeren van een aandrijving van de Arcade-stijl:
Een aandrijving van de stijl arcade kan worden ingewikkelder te programmeren, als u alleen een joystick gebruikt om te controleren de volledige beweging van de robot chassis. Hieronder is een arcade-stijl code, met uitleg.
motor[FrontL] = vexRT[Ch2] + vexRT[Ch1]; motor[BackL] = vexRT[Ch2] + vexRT[Ch1]; motor[FrontR] = vexRT[Ch2] - vexRT[Ch1]; motor[BackR] = vexRT[Ch2] - vexRT[Ch1];
In deze code, we zijn nog steeds de motor op het juiste kanaal toewijzen, maar nu zijn we toe te voegen of af te trekken een ander kanaal, zodat de robot om te zetten als u de joystick naar de kant verplaatst. Dit is gemaakt en getest om alleen gebruik maken van een joystick, en deze code gebruikt de juiste joystick, waardoor de links een open voor een lift!
Programmeren van een lift:
Bij het programmeren van een motor aangedreven lift, schrijft u in wezen hetzelfde is als een chassis-station. Hier is een voorbeeld van een eenvoudige lift-programma, voor een zes-bar ontwerp:
motor[BackL] = vexRT[Ch3]; motor[TopR] = vexRT[Ch3]; motor[BackR] = vexRT[Ch3]; motor[TopL] = vexRT[Ch3];
In deze code zijn alle motoren door kanaal 3, ook wel bekend als de Y-as van de linker joystick wordt gecontroleerd. Nu met deze code, en een aandrijving van de stijl arcade kunt u de lift zowel het station op hetzelfde moment!
Programmering Pneumatica:
Pneumatiek zijn een beetje anders als het gaat om programmeren, onthoud wanneer waren we het opzetten van de sensoren in de vooraf autonome? We zijn in wezen hetzelfde doen, maar nu we zijn alleen het verstrekken van een waarde van "0" of "1", en het is binnen een if / else als / anders loop!
Als / anders als / anders lussen:
Als / anders als / anders lussen doen precies wat ze klinken zoals ze doen zou, "Als" Dit is gebeurt, iets doen, als het niet gedaan, dan iets doen "Anders". Hier is een voorbeeldcode:
if (x = 2) { //If x is equal to 2... print("x is equal to 2!"); } else if (x = 3) { //If x is equal to 3... print("x is equal to 3!"); } else { //If x is not equal to either of those print("I don't know what x is!"); }
Deze code is een eenvoudige manier aan te tonen van een if / else als / anders loop. Nu, hier is de code voor de pneumatica, houd er rekening mee dat we de opdracht Pneumatiek en de controller in de dezelfde als command / anders voeren als / anders loop.
if (vexRT[Btn6U] == 1) { //If the controller button "6 UP" is pressed, extend the pneumatics SensorValue[Pneumatics] = 1; } else if (vexRT[Btn6D] == 1) { //If the controller button "6 DOWN" is pressed, retract the pneumatics SensorValue[Pneumatics] = 0; } else { // If nothing is pressed // Do nothing at all }
In deze lus hierboven, het is te zeggen als de knop van de controller "6 UP" wordt ingedrukt, breiden de pneumatiek, maar als de knop van de controller "6 DOWN" is ingedrukt, de pneumatiek intrekken, en als niets wordt gedrukt, vervolgens niets doen!
Wanneer u met knoppen werkt, is het bijna dezelfde code als de joystick, maar in plaats van alleen de joystick toe te wijzen aan een motor, we moeten de cortex vertellen dat wanneer de knop wordt gedrukt, iets doen. De status van de knop "1" betekent dat de knop wordt ingedrukt, terwijl de status van de knop '0', betekent dat de knop niet wordt ingedrukt. Bij het programmeren van de knoppen, zorg ervoor dat u twee gelijktekens (==).