Codice controller personalizzato in VEXcode V5

L'uso del controller può semplificare la guida e lo spostamento del robot per completare un'attività. Tuttavia, esistono limitazioni all'utilizzo del programma Drive e, a seconda della costruzione del robot o dell'attività da svolgere, potresti volere controlli diversi. La codifica del controller consente di ottimizzare il controller per adattarlo meglio al robot e all'attività da svolgere. Esistono diversi modi per codificare il controller in VEXcode V5. Ognuno ha i suoi vantaggi e limiti e alcuni metodi sono più adatti a determinate situazioni a seconda del risultato desiderato.

Questo articolo ti guiderà attraverso tre diverse opzioni per la codifica personalizzata del controller in VEXcode V5. Ogni metodo verrà descritto con i suoi vantaggi, limiti e un caso d'uso di esempio per guidarti nella scelta di un metodo. Ai fini di questo articolo, tutti gli esempi di codice mostrati sono stati creati per Clawbot. Tuttavia, gli stessi concetti potrebbero essere applicati a numerose altre build presenti su builds.vex.come a build personalizzate.

Opzione 1: Assegnazione dei pulsanti nella configurazione del dispositivo

Questa opzione è ottima quando utilizzi una build standard, come Speedbot o Clawbot, e desideri essere subito operativo.

Questa opzione consente di assegnare motori, una trasmissione o gruppi di motori ai pulsanti sul controller nella configurazione del dispositivo. Per ulteriori informazioni su come assegnare i pulsanti al controller nella configurazione del dispositivo, visualizza questo articolo.

Diagramma che illustra i blocchi V5 per la programmazione, mostrando vari tipi di blocchi e le loro connessioni in un formato visivo per facilitare la comprensione dei tutorial di codifica basati su blocchi.

Riepilogo dell'opzione 1: assegnazione dei pulsanti nella configurazione del dispositivo

Vantaggi

Limitazioni

Esempio di situazione

  • Configurazione rapida senza necessità di codifica
  • Metodo più semplice
  • Facilmente regolabile
  • È possibile assegnare ai pulsanti singoli motori, una trasmissione standard e gruppi di motori
  • Le assegnazioni dei pulsanti sono limitate al numero di pulsanti sul Controller
  • La trasmissione non può superare i 4 motori o essere personalizzata (è supportata solo un'unità standard, non un'unità H, olonomica o altra trasmissione personalizzata)
  • Manipolazione di una build standard come Speedbot, Clawbot o una semplice modifica di tali build standard. Ad esempio, uno Speedbot con un'aspirazione attaccata alla parte anteriore controllata da un gruppo motore.
  • Manipolare rapidamente quali pulsanti corrispondono a diversi comportamenti sul robot senza molta codifica

Opzione 2: utilizzo di un ciclo infinito

Se stai utilizzando una build personalizzata invece di una build standard o desideri poter avere una maggiore personalizzazione nel tuo controller, questa opzione è buona. L'utilizzo di un ciclo Forever è un'ottima introduzione per creare codice personalizzato per il controller.

Questa opzione inserisce tutte le condizioni per il Controller e i pulsanti associati in un ciclo Forever. Ciò fornisce maggiore flessibilità, soprattutto con progetti di build personalizzati, ma richiede anche una certa esperienza di codifica. Tuttavia, una considerazione quando si utilizza questa opzione è la lunghezza e la complessità del progetto. Più condizioni vengono aggiunte, più lungo può diventare lo stack di codice. Ciò significa che più blocchi devono essere eseguiti in ordine e, quando ci sono molti blocchi, ciò può rallentare l'esecuzione del progetto. Un'esecuzione più lenta del progetto può creare un ritardo tra la pressione dei pulsanti del controller e la visualizzazione del comportamento del robot.

L'esempio specifico mostrato di seguito è un modo in cui puoi utilizzare un ciclo Forever con un robot di progettazione personalizzato (come un robot con una trasmissione personalizzata) per guidare il robot e manipolare l'artiglio e il braccio per interagire con gli oggetti.

Diagramma che illustra i tutorial sui blocchi V5, mostrando vari tipi di blocchi e le loro connessioni in un layout chiaro e organizzato per una migliore comprensione della programmazione della robotica VEX.

Scarica il file di progetto VEXcode V5 "Opzione 2" >

Spiegazione del codice opzione 2.

Pezzo di codice

Spiegazione

Diagramma che illustra i componenti del blocco V5 e le loro funzioni in un formato tutorial, mostrando vari tipi di blocchi e connessioni a scopo didattico.

Per questo esempio di codice è stato utilizzato un Clawbot. Quando si utilizzano i pulsanti sul Controller per sollevare e abbassare il braccio, non appena il pulsante viene rilasciato, a causa della gravità il braccio ricadrà verso il basso. Impostando sia il braccio che l'artiglio su "mantieni" si garantirà che sia il braccio che l'artiglio rimarranno in posizione anche dopo che i pulsanti sul controller saranno stati rilasciati.

Diagramma che illustra i componenti dei blocchi V5 e le loro funzionalità, utilizzato nella sezione Blocks Tutorials della VEX Knowledge Base, che presenta vari tipi di blocchi e le relative connessioni a scopo didattico. Diagramma che illustra i blocchi V5 con componenti e connessioni etichettati, utilizzato nei tutorial per comprendere la programmazione a blocchi nella robotica VEX.

Per questo esempio di codice è stato utilizzato un Clawbot. Quando si utilizzano i pulsanti sul Controller per sollevare e abbassare il braccio, non appena il pulsante viene rilasciato, a causa della gravità il braccio ricadrà verso il basso. Impostando sia il braccio che l'artiglio su "mantieni" si garantirà che sia il braccio che l'artiglio rimarranno in posizione anche dopo che i pulsanti sul controller saranno stati rilasciati.

Viene utilizzato un ciclo Forever per verificare continuamente quali pulsanti vengono premuti sul Controller.

I blocchi [Imposta velocità motore] vengono utilizzati per impostare la velocità del motore sulla posizione corrente del controller lungo gli assi 2 e 3. Ciò equivale a impostare un'auto in modalità guida. Ciò non fa necessariamente muovere l'auto, la regola e basta.

Ciascun asse del joystick restituisce un valore compreso tra -100 e +100 e restituisce un valore zero quando centrato. Ciò significa quindi che gli assi del joystick, quando premuti, equivalgono a una variazione compresa tra -100% e 100%. Più gli assi vengono spinti verso 100 o -100, più velocemente girerà il motore.

Il blocco [Spin] viene quindi utilizzato per spostare effettivamente il motore. Ciò equivale a premere il gas sull'auto una volta impostata la direzione. Ciò consente a ciascun motore di essere controllato da uno dei quattro assi del controller.

Diagramma che illustra i blocchi V5 per i tutorial di programmazione, che mostra vari tipi di blocchi e le relative connessioni, progettati per migliorare la comprensione dei concetti di codifica nei contesti educativi.

Per questo esempio di codice è stato utilizzato un Clawbot. Quando si utilizzano i pulsanti sul Controller per sollevare e abbassare il braccio, non appena il pulsante viene rilasciato, a causa della gravità il braccio ricadrà verso il basso. Impostando sia il braccio che l'artiglio su "mantieni" si garantirà che sia il braccio che l'artiglio rimarranno in posizione anche dopo che i pulsanti sul controller saranno stati rilasciati.

Il blocco [If then else if then else] viene utilizzato per mappare determinati comportamenti ai pulsanti premuti o rilasciati sul Controller. In questa sezione del codice, le condizioni impostate sono se vengono premuti i pulsanti Su o Giù. Se è così, si verificheranno determinati comportamenti, come il braccio che si alza e si abbassa. C'è anche la parte else della condizione, se nessuno dei due pulsanti viene premuto, il braccio è impostato per smettere di muoversi.

Nota che la seguente sezione di codice nel progetto Claw segue la stessa spiegazione.

Riepilogo dell'opzione 2: utilizzo di un ciclo infinito

Vantaggi

Limitazioni

Esempio di situazione

  • Può ospitare costruzioni personalizzate, in particolare trasmissioni con più di 4 motori
  • Può assegnare più comportamenti a un singolo pulsante
  • Può assegnare comportamenti a diversi assi sul controller (a differenza delle uniche opzioni Left Arcade, Right Arcade, Split Arcade e Tank Drive nella configurazione del dispositivo)
  • Richiede una certa conoscenza della codifica (condizionali, loop e conoscenza dei pulsanti/joystick sul controller)
  • Potenziale rallentamento dell'esecuzione del progetto o ritardo nel tempo di risposta dei pulsanti. Poiché tutti i comandi sono contenuti in un singolo ciclo Forever, l'esecuzione del codice potrebbe essere lenta a seconda delle condizioni impostate e della lunghezza del codice.
  • Utilizzo del controller con un robot personalizzato, in particolare con una trasmissione non standard
  • Quando si desidera assegnare più comportamenti a un singolo pulsante. Ad esempio, quando si preme il pulsante Su, l'Artiglio può aprirsi, avanzare e quindi chiudersi attorno a un oggetto.

Opzione 3: Utilizzo degli eventi

Se desideri molta personalizzazione per il tuo controller, l'utilizzo degli eventi è l'opzione migliore per te. La semplice pressione di un pulsante può attivare più comportamenti del robot, come premere un pulsante per aprire l'artiglio, sollevare il braccio e avanzare per una distanza prestabilita. Cercare di codificare più comportamenti per pulsante all'interno di un ciclo Forever causerebbe un notevole rallentamento dell'esecuzione del progetto: l'utilizzo di Eventi ti consente di farlo in modo più efficace.

Questa opzione utilizza gli eventi per interrompere il flusso del progetto. Questo è simile all'utilizzo di un ciclo Forever, ma consente di organizzare meglio il codice, in modo che l'esecuzione del pulsante abbia un tempo di risposta più rapido. Un tempo di risposta più rapido significa che non vedrai un ritardo tra la pressione dei pulsanti del controller e la visualizzazione del comportamento del robot. Questo esempio mostra gli stessi comportamenti del progetto precedente, ma eseguiti utilizzando gli eventi anziché il ciclo Forever.

Illustrazione dei blocchi V5 utilizzati nei tutorial, che mostra vari tipi di blocchi e le relative connessioni, dimostrando come costruire e programmare con la robotica VEX V5.

Scarica il file di progetto VEXcode V5 "Opzione 3" >

Spiegazione del codice opzione 3.

Pezzo di codice

Spiegazione

Diagramma che illustra vari blocchi V5 utilizzati nei tutorial di robotica, evidenziandone le funzioni e le connessioni a scopo didattico.

Per questo esempio di codice è stato utilizzato un Clawbot. Quando si utilizzano i pulsanti sul Controller per sollevare e abbassare il braccio, non appena il pulsante viene rilasciato, a causa della gravità il braccio ricadrà verso il basso. Impostando sia il braccio che l'artiglio su "mantieni" si garantirà che sia il braccio che l'artiglio rimarranno in posizione anche dopo che i pulsanti sul controller saranno stati rilasciati.

Diagramma che illustra i blocchi V5 in un tutorial di robotica, mostrando vari tipi di blocchi e le relative connessioni per attività di programmazione. Diagramma che illustra i blocchi V5 con componenti e connessioni etichettati, utilizzato nei tutorial per comprendere la programmazione a blocchi nella robotica VEX.

Per questo esempio di codice è stato utilizzato un Clawbot. Quando si utilizzano i pulsanti sul Controller per sollevare e abbassare il braccio, non appena il pulsante viene rilasciato, a causa della gravità il braccio ricadrà verso il basso. Impostando sia il braccio che l'artiglio su "mantieni" si garantirà che sia il braccio che l'artiglio rimarranno in posizione anche dopo che i pulsanti sul controller saranno stati rilasciati.

{When controller axis} I blocchi evento vengono utilizzati per attivare determinati comportamenti quando uno dei quattro assi sul Controller viene modificato utilizzando i joystick.

I blocchi [Imposta velocità motore] vengono utilizzati per impostare la velocità del motore sulla posizione corrente del controller lungo gli assi A e D. Ciò equivale a impostare un'auto in modalità guida. Ciò non fa necessariamente muovere l'auto, la regola e basta.

Ciascun asse del joystick restituisce un valore compreso tra -100 e +100 e restituisce un valore zero quando centrato. Ciò significa quindi che gli assi del joystick, quando premuti, equivalgono a una variazione compresa tra -100% e 100%. Più gli assi vengono spinti verso 100 o -100, più velocemente girerà il motore.

Il blocco [Spin] viene quindi utilizzato per spostare effettivamente il motore. Ciò equivale a premere il gas sull'auto una volta impostata la direzione. Ciò consente a ciascun motore di essere controllato da uno dei quattro assi del controller.

Diagramma che illustra i blocchi V5 utilizzati nei tutorial di programmazione, mostrando vari tipi di blocchi e le loro funzioni all'interno del sistema VEX Robotics.

Per questo esempio di codice è stato utilizzato un Clawbot. Quando si utilizzano i pulsanti sul Controller per sollevare e abbassare il braccio, non appena il pulsante viene rilasciato, a causa della gravità il braccio ricadrà verso il basso. Impostando sia il braccio che l'artiglio su "mantieni" si garantirà che sia il braccio che l'artiglio rimarranno in posizione anche dopo che i pulsanti sul controller saranno stati rilasciati.

{When controller axis} I blocchi eventi vengono utilizzati per mappare determinati comportamenti ai pulsanti premuti o rilasciati sul controller. In questa sezione del codice, le condizioni impostate sono se vengono premuti i pulsanti Su o Giù. Se è così, si verificheranno determinati comportamenti, come il braccio che si alza, si abbassa o si ferma.

Nota che l'ultima sezione di codice nel progetto per Claw segue la stessa spiegazione.

Riepilogo dell'opzione 3: utilizzo degli eventi

Vantaggi

Limitazioni

Esempio di situazione

  • Può ospitare costruzioni personalizzate, in particolare trasmissioni con più di 4 motori
  • Può assegnare più comportamenti a un singolo pulsante
  • Può assegnare comportamenti a diversi assi sul controller (a differenza delle uniche opzioni Left Arcade, Right Arcade, Split Arcade e Tank Drive nella configurazione del dispositivo)
  • Esecuzione del codice più rapida e quindi reattività dei pulsanti (poiché ciascuna condizione viene richiamata separatamente e non incorporata in un unico stack di codice)
  • Richiede la massima conoscenza della codifica delle opzioni (condizionali, loop, eventi e conoscenza dei pulsanti/joystick sul controller)
  • Utilizzo del controller con un robot personalizzato, in particolare con una trasmissione non standard
  • Quando si desidera assegnare più comportamenti a un singolo pulsante senza ritardi. Ad esempio, quando si preme il pulsante Su, l'Artiglio può aprirsi, avanzare e quindi chiudersi attorno a un oggetto.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: