Satellitpositioneringssystem för VEX Cortex (7 / 9 steg)
Steg 7: Autonoma funktioner
Autonoma funktioner, är ett trevligt och enkelt sätt att hålla din kod snyggt och prydligt. När det gäller programmering dem, placeras de innan de pre autonoma, men efter tävlingen ingår (se Galleri). En hel del funktion exempel kan hittas i satellitpositioneringssystem filer.
Programmera en standard flytta:
Nedan är en kod för en standard flytta, förklaringar är kommenterade i koden.
void standardMove (int tid, int power) {
Tom är en typ av loop, skapar vi en
motor [BackL] = makt; funktion som kallas "standardMove", i detta
motor [italienska] = makt; funktion, en int tid och makt är
motor [BackR] = makt; skapade, och heter i slingan.
motor [FrontR] = makt; Om du ville ha roboten att gå framåt
wait1Msec(Time); i 1 sekund, på kraften i 80, du
motor [BackL] = 0; skulle skriva "standardMove(1000, 80);".
motor [italienska] = 0; Detta fungerar eftersom "1000" ersätter
motor [BackR] = 0; "tiden" och 80 ersätter "makt".
motor [FrontR] = 0; Stoppa motorer när gjort.
}
Programmera en standard hiss:
Programmera en standard hiss är i princip samma sak som en enhet, allt du verkligen har att göra är att ändra namnen på motor och byta namn på den verkliga funktionen. Därför behövs inte en förklaring.
void standardLift (int tid, int power) {
motor [BackL] = makt;
motor [TopL] = makt;
motor [BackR] = makt;
motor [TopR] = makt;
wait1Msec(Time);
motor [BackL] = 0;
motor [TopL] = 0;
motor [BackR] = 0;
motor [TopR] = 0;
}
Programmera en Gyro sväng:
Nu har vi kommit mer besvärlig del, programmering en gyro sväng. Det finns flera sätt att göra detta, några mycket enkla men ändå inte lika tillförlitliga och lite mer komplicerat med drift rättelser, som är mer tillförlitliga. Lyckligtvis för oss, har satellitpositioneringssystem redan tillhandahållit ett drift korrigering program, så det är alla kopiera och klistra in i vår egen funktion!
#define TURN_SLOWDOWN 100
int grader = 0;
int fel = 5;
void gyroTurn (int uthärda) {
int currentBearing = SensorValue [Gyro];
int targetBearing = uthärda + currentBearing;
om (med > 0) {/ / vänster sväng
medan (SensorValue [Gyro] < targetBearing - TURN_SLOWDOWN) {
motor [BackL] = -50;
motor [italienska] = -50;
motor [BackR] = 50;
motor [FrontR] = 50;
}
medan (SensorValue [Gyro] < targetBearing) {
motor [BackL] = -20;
motor [italienska] = -20;
motor [BackR] = 20;
motor [FrontR] = 20;
}
motor [BackL] = 0;
motor [italienska] = 0;
motor [BackR] = 0;
motor [FrontR] = 0;
}
annat {/ / just slå
medan (SensorValue [Gyro] > targetBearing + TURN_SLOWDOWN) {
motor [BackL] = 50;
motor [italienska] = 50;
motor [BackR] = -50;
motor [FrontR] = -50;
}
medan (SensorValue [Gyro] > targetBearing) {
motor [BackL] = 20;
motor [italienska] = 20;
motor [BackR] = -20;
motor [FrontR] = -20;
}
motor [BackL] = 0;
motor [italienska] = 0;
motor [BackR] = 0;
motor [FrontR] = 0;
}
}
Se till att du kopiera hela koden, inklusive "#define" och heltal.