Controller: Esplorazione del Tank Drive - C++
Toolbox per l'insegnante
-
Lo scopo di questa attività
Utilizzando il progetto di esempio Tank Control, gli studenti possono controllare il Clawbot tramite il controller. Gli studenti dovranno regolare i parametri nelle istruzioni LeftMotor.setVelocity(), RightMotor.setVelocity(), LeftMotor.spin(), RightMotor.spin(), leftMotorSpeed = Controller1.Axis3.position(), e rightMotorSpeed = Controller1.Axis2.position() per controllare la velocità di ciascuno dei motori del Clawbot e consentire al Controller di controllare le funzioni del motore.
Per maggiori informazioni su una qualsiasi delle istruzioni, visitare la guida nella sezione C++ in VEXcode V5.
Di seguito è riportato uno schema di ciò che gli studenti faranno in questa attività:
-
Esplora il progetto di esempio Tank Control.
-
Comprendere l'uso della struttura del ciclo infinito while True .
-
Completa la sfida Robo-Slalom!
Suggerimenti per gli insegnanti
Se è la prima volta che uno studente utilizza VEXcode V5, può accedere a molti utili articoli nella VEX Knowledge Base.
| Quantità | Materiali necessari |
|---|---|
| 1 |
Kit di avvio per la classe VEX V5 (con firmware aggiornato) |
| 1 |
VEXcode V5 (ultima versione, Windows, macOS) |
| 1 |
Quaderno di ingegneria |
| 1 |
Esempio di progetto di controllo del serbatoio |
| 2 o più |
Oggetti da usare come ostacoli in classe |
Suggerimenti per gli insegnanti
-
Utilizzo del completamento automatico
Il completamento automatico è una funzionalità di VEXcode V5 che prevede il resto del comando che stai digitando. Mentre gli studenti lavorano in VEXcode V5, incoraggiateli a usare la funzione di completamento automatico per aiutarli con la sintassi . L'articolo Completamento automatico spiega come usare la funzione di completamento automatico.

Questa attività ti fornirà gli strumenti per programmare il tuo Controller.
Fase 1: Iniziamo a programmare il Controller.
- Aprire il progetto di esempio Tank Control .
-

Esegui le seguenti operazioni sul tuo quaderno di progettazione:
Prevedi cosa farà il Clawbot in questo progetto. Spiega meglio di semplice fatto che il progetto utilizza il Controller.
In che modo i joystick muovono il robot? Cosa sta facendo il Clawbot?int main() { // Initializing Robot Configuration. DO NOT REMOVE! vexcodeInit(); // Begin project code. // Main Controller loop to set motors to controller axis positions 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; }
Risposte alla cassetta degli attrezzi dell'insegnante
-
- Questo progetto utilizzerà la struttura a ciclo infinito while True per controllare continuamente la posizione del joystick sinistro e destro. Quando si spinge verso l'alto il joystick sinistro (o destro), la velocità viene impostata in base alla distanza in avanti a cui si spinge il joystick.
- Quindi, più si spinge in avanti il joystick, più velocemente verrà impostata la velocità e più velocemente si muoveranno i motori. Lo stesso concetto funziona anche spingendo indietro il Joystick. Quanto più indietro si spinge il joystick, tanto più velocemente i motori si muoveranno in retromarcia.
- Salva, scarica ed (C++) il progetto di esempio Tank Control .
-
Per , consulta le sezioni della libreria VEX su C++ oppure consulta il tutorial in VEXcode V5 che spiega come scaricare ed eseguire un progetto.

- Controlla le spiegazioni del progetto nel tuo quaderno di progettazione e aggiungi note per correggerle, se necessario.
Fase 2: Controller: Controllo del serbatoio
Toolbox per l'insegnante
-
Le strutture del ciclo infinito mentre sono vere
In questo passaggio viene analizzata l'importanza della struttura del ciclo infinito while True . Dovreste rivedere le informazioni come classe. Puoi modellare il comportamento con il tuo Clawbot e il tuo Controller oppure, se il tempo lo consente, chiedere agli studenti di eseguire il programma senza la struttura del ciclo infinito while True .
Quali sono i vantaggi dell'utilizzo della struttura a ciclo infinito while True?
Ecco il nostro progetto senza la struttura del ciclo infinito while True:
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Begin project code.
// Main Controller loop to set motors to controller axis postiions
LeftMotor.setVelocity(Controller1.Axis3.position(), percent);
RightMotor.setVelocity(Controller1.Axis2.position(), percent);
LeftMotor.spin(forward);
RightMotor.spin(forward);
}
Cosa pensi che accadrebbe se questo programma venisse eseguito? Discutine in gruppo. Annota la tua previsione sul quaderno di ingegneria.
Toolbox per l'insegnante
-
Comprensione della struttura
Senza il ciclo infinito while True , il valore della velocità per ciascun motore viene impostato non appena il progetto viene eseguito e tale valore rimane costante finché il progetto non viene arrestato. In altre parole, se si esegue il progetto senza muovere nessuno dei due joystick, poiché la posizione predefinita del joystick sul suo asse è 0, la velocità di entrambi i motori rimarrà a 0, anche se si muove il joystick.
Allo stesso modo, supponiamo di spostare il joystick sinistro verso l'alto il più possibile lungo l'asse 3 e di tenerlo premuto in questa posizione. Se esegui il progetto sopra, il motore sinistro si muoverà alla massima velocità e manterrà tale velocità anche se sposti il joystick verso il basso lungo l'asse 3. Questo perché Clawbot riceve la sua istruzione iniziale dal Controller non appena il progetto viene eseguito; tuttavia, senza un Loop, quel valore iniziale non può essere aggiornato.
Il ciclo infinito while True indica al Clawbot di aggiornare costantemente la velocità e di continuare a funzionare per tutta la durata del progetto. In altre parole, il ciclo infinito while True , in questo progetto, consente di modificare la velocità di ciascun motore spostando il joystick lungo l'asse 2 o 3 e il Clawbot risponderà di conseguenza finché non si interrompe il progetto o non si spegne il Clawbot.
Fase 3: affronta un percorso di slalom!
Toolbox per l'insegnante
-
Imposta l'attività
Organizzare gli studenti in piccoli gruppi da 2 o 4 studenti. Uno studente deve essere designato come conducente, ovvero la persona che utilizzerà il controller per manovrare il Clawbot.
Chiedi agli studenti di completare questo slalom utilizzando il controller per muovere il Clawbot lungo la parte esterna di ogni "bandiera". Il percorso del Clawbot deve impedirgli di toccare nessuna bandiera e consentirgli di tagliare il traguardo. Le bandierine possono essere costituite da qualsiasi materiale/oggetto scolastico che hai a portata di mano (una gomma, un rotolo di nastro adesivo, una scatola di fazzoletti) e possono essere posizionate prima di azionare il Clawbot.
Se il tempo lo consente, fate invertire i ruoli tra gli studenti per dare ad altri l'opportunità di guidare il Clawbot. Si potrebbe anche trasformare il tutto in una competizione all'interno dei gruppi o tra gruppi, osservando la velocità con cui ogni pilota riesce a completare lo slalom.

Gli slalom sono percorsi nei quali il partecipante deve aggirare delle bandierine o dei segnali stabiliti. Lo slalom tra gli sci è uno sport invernale molto popolare e fa parte delle Olimpiadi invernali.
Ora che il controller è associato e il progetto C++ è scaricato, sei pronto a muovere il tuo Clawbot utilizzando il controller!
- Raccogli dall'insegnante i quattro oggetti che userai come bandiere nello slalom.
- Collaborare per posizionare le bandiere in modo che il conducente possa guidare il Clawbot, secondo lo schema dello slalom.
- Scarica il progetto di esempio Tank Control. In caso di domande su come scaricare un progetto, consultare il tutorial Scaricare ed eseguire un progetto.
Fase 4: Robo-Slalom

Utilizza il controller per muovere il tuo Clawbot lungo la parte esterna di ogni "bandiera". Il percorso del robot deve impedirgli di toccare nessuna bandierina e consentirgli di tagliare il traguardo.
- Esegui il progetto e guida il Clawbot in avanti e indietro, e gira a sinistra e a destra usando entrambi i joystick.
- Calcola il tempo impiegato dal Clawbot per completare il percorso. Documentare i tempi nel quaderno di progettazione.
- Quanto velocemente riesci a far attraversare a Clawbot il percorso Slalom?
Motivare la discussione
-
Riflettere sull'attività
D: Il Clawbot ha risposto al Controller come ti aspettavi?
A: Le risposte possono variare; tuttavia, l'obiettivo di questa domanda è promuovere il pensiero cognitivo. Gli studenti hanno iniziato prevedendo i comportamenti prima di testarli, documentando i risultati e riflettendo.
D: Qual è la sfida più grande nello spostare il Clawbot in avanti o indietro in linea retta?
A: Sebbene le risposte possano variare, una risposta comune dovrebbe essere che entrambi i joystick devono muoversi in sincronia tra loro per garantire che i motori del Clawbot si muovano nella stessa direzione e alla stessa velocità
D: In che modo l'utilizzo del ciclo infinito while True consente di utilizzare continuamente il controller per muovere il Clawbot?
A: Senza il ciclo infinito while True , il Clawbot eseguirebbe i comportamenti determinati dalle istruzioni nel progetto solo una volta. Il ciclo infinito while True indica al Clawbot di aggiornare costantemente la velocità e di continuare a funzionare per tutta la durata del progetto. In altre parole, il ciclo infinito while True ti consente di usare il controller per muovere il Clawbot indefinitamente, o finché la batteria non si esaurisce.