Controller e loop
Nelle competizioni, le squadre devono manipolare i loro robot in modalità wireless con i controller. Il
controller è programmato per aggiornare il robot in base all'input dell'utente. I loop vengono utilizzati
nel progetto in modo che il robot controlli ripetutamente le informazioni di input aggiornate. I loop
consentono al progetto di controllare rapidamente quali pulsanti sono stati premuti o fino a che punto
sono stati premuti i joystick. Una volta verificate, queste informazioni vengono rapidamente trasmesse al
robot in modo che risponda rapidamente alle istruzioni del controller.
Di seguito è riportato il
progetto di esempio Tank Drive di VEXcode V5. Il ciclo Forever in questo progetto
controlla le posizioni degli assi 2 e 3 per sempre al fine di impostare la velocità dei motori.
// Include the V5 Library
#include "vex.h"
// Consente un utilizzo più semplice della libreria VEX
utilizzando lo spazio dei nomi vex;
int main() {
// Initializing Robot Configuration. NON RIMUOVERE!
vexcodeInit();
// Inizio codice progetto.
// Main Controller loop to set motors to controller axis posiions
while (true) {
LeftMotor.setVelocity (Controller1.Axis3.position (), percent);
RightMotor.setVelocity (Controller1.Axis2.position (), percent);
LeftMotor.spin (forward);
RightMotor.spin (forward);
wait(5, msec);
}
return 0;
}
I loop sono importanti anche per la programmazione autonoma senza controller. Un ciclo aiuta a semplificare e organizzare i comandi ripetuti all'interno di un progetto.
Estendi il tuo apprendimento
Per espandere questa attività, chiedi ai tuoi studenti di esplorare le differenze tra il controllo arcade e il controllo del carro armato. Gli studenti possono seguire i progetti di esempio presenti in VEXcode V5.
Ci sono quattro progetti di esempio: Left Arcade, Right Arcade, Split Arcade e Tank Drive.
Discutere come funzionano i loop all'interno dei programmi, nonché i pro e i contro di ciascun tipo di controllo.
Per correlare questa attività alla matematica, utilizzare la galleria sinistra/destra (un joystick) e dividere i progetti arcade/serbatoio (entrambi i joystick) sopra per discutere i ruoli degli assi X e Y all'interno del progetto.