Satellitpositioneringssystem för VEX Cortex (6 / 9 steg)
Steg 6: Skriva en föraren kontroll
* Klicka på bilden för att förstora *
När du skriver en föraren kontroll, du har ett par alternativ, beroende på vilken chassi du har setup. Om du kör standard 4 motordrift, med regelbundna gummihjul, har du två alternativ, en tank typ enhet eller en arkad stil enhet.
Programmera en Tank typ enhet:
En tank typ enhet använder båda joysticks, vänster för att styra din två vänster hjul och rätten för att kontrollera dina två rätt hjul. Detta är förmodligen det mest enkla driva programmet att skriva, men det är inte så bra när det gäller tävlingar, eftersom du kanske behöver en joystick för något annat. Om du vill flytta roboten mot vänster, skulle du flytta vänster styrspak tillbaka och högra styrspaken framåt. Detta skulle göra en plats-vänd till varhelst du behöver. Om du vill aktivera rätt skulle du göra motsatsen. Körning har framåt båda joysticks framåt och har bakåt båda joysticks bakåt.
Här är ett exempelkod i en tank typ enhet, kom ihåg att värderar måste ändras för att passa din robot.
motor [italienska] = vexRT [Ch3];
motor [BackL] = vexRT [Ch3];
motor [FrontR] = vexRT [Ch2];
motor [BackR] = vexRT [Ch2];
I denna kod tilldelar vi den "motor []" en joystick på handkontrollen. "vexRT [];" är helt enkelt kommandot för registeransvarige, "Ch2" tilldelar som controller kanalen, "Ch2" är Y-axeln på registeransvarige höger styrspak. En bild finns i galleriet som visar registeransvarige med joystick kanaler. Om du använder den här koden, se till att du ersätta vad är mellan den "[]", med namnet på din egen motorer, men se till att båda vänster motorer är på samma kanal, och att rätt motorerna är både på deras kanal.
Programmera en arkad stil enhet:
En arkad stil enhet kan vara mer komplicerat att programmera, som du bara använder en styrspak styra hela förslaget till robotens chassi. Nedan är en arkad stil kod, med förklaringar.
motor [italienska] = vexRT [Ch2] + vexRT [Ch1];
motor [BackL] = vexRT [Ch2] + vexRT [Ch1];
motor [FrontR] = vexRT [Ch2] - vexRT [Ch1];
motor [BackR] = vexRT [Ch2] - vexRT [Ch1];
I denna kod, vi fortfarande tilldelar motorn rätt kanal, men nu vi att lägga till eller dra ifrån en annan kanal, så att roboten att vända så du flytta joysticken åt sidan. Detta har gjorts och testats för att bara använda en joystick, och detta särskilt koden använder höger joystick, som lämnar kvar en öppen för en hiss!
Programmera en hiss:
När programmering motor motordriven hiss, skriver i princip samma sak som chassi driva. Här är ett exempel på en enkel lift program, för en sex-bar design:
motor [BackL] = vexRT [Ch3];
motor [TopR] = vexRT [Ch3];
motor [BackR] = vexRT [Ch3];
motor [TopL] = vexRT [Ch3];
I denna kod styrs alla motorer av kanal 3, annars känd som Y-axeln till vänster joystick. Nu med denna kod, och en arkad stil enhet, kan du styra både hissen och enheten samtidigt!
Programmering pneumatik:
Pneumatik är lite annorlunda när det gäller programmering, minns när vi var att upprätta sensorer i de tidigare autonoma? Vi i huvudsak gör samma sak, men nu ger vi endast värdet "0", eller "1", och det är inom en if / else om / annan slinga!
Om / else om / annat loopar:
Om / else om / annat loopar göra exakt vad de låter som de skulle göra, "Om" Detta är gjort, då göra något, om det inte är gjort, då göra något "Annat". Här är en exempelkod:
om (x = 2) {//If x är lika med 2...
skriva ut ("x är lika med 2!");
}
annars om (x = 3) {//If x är lika med 3...
skriva ut ("x är lika med 3!");
}
annat {//If x är inte lika med någon av dessa
skriva ut ("Jag vet inte vad x är!");
}
Denna kod är ett enkelt sätt att demonstrera en if / else om / annan slinga. Nu, här är koden för pneumatik, kom ihåg att vi genomför kommandot pneumatik och registeransvarige kommando i samma if / else om / annan slinga.
om (vexRT [Btn6U] == 1) {//If knappen controller "6 UP" trycks, utvidga pneumatik
SensorValue [pneumatik] = 1;
}
annars om (vexRT [Btn6D] == 1) {//If knappen controller "6 DOWN" är nedtryckt, dra tillbaka pneumatik
SensorValue [pneumatik] = 0;
}
annat {/ / om ingenting trycks
Göra ingenting alls
}
Det säger om knappen controller "6 UP" trycks, utvidga pneumatik, men om knappen controller "6 DOWN" är nedtryckt, dra tillbaka pneumatik i denna loop ovan, och om ingenting trycks, gör ingenting!
När du arbetar med knappar, är det nästan samma kod som joystick, men istället för att bara ge joysticken en motor, vi måste berätta cortex som när knappen trycks, göra något. Tillståndet knapp "1" innebär att knappen som används, medan knappen delstaten "0", innebär att knappen inte är intryckt. Vid programmering av knappar, se till att du inkluderar två likhetstecken (==).