Codice controller personalizzato in VEXcode IQ

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 IQ. 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 IQ. 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 trovate su builds.vex.come build personalizzate.

Opzione 1: assegnazione dei pulsanti nella configurazione del dispositivo

Questa opzione è ottima quando utilizzi una build standard, come BaseBot 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, vedere questo articolo.

Controller VEX IQ

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

Vantaggi

Limitazioni

Situazione di esempio

  • 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 BaseBot, Clawbot o una semplice modifica di tali build standard. Ad esempio, un BaseBot 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 continuo

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.

Immagine dell'utilizzo di un ciclo infinito

Scarica il file di progetto VEXcode IQ (2a generazione) "Opzione 2" >

Nota: Se si utilizza un Clawbot di prima generazione, il motore del braccio dovrà essere invertito nella configurazione del dispositivo per funzionare come previsto nel progetto sopra.

Spiegazione del codice dell'Opzione 2.

Pezzo di codice

Spiegazione

Imposta l'arresto di ArmMotor su Hold e imposta l'arresto di ClawMotor su Hold

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.

Impostazione della velocità e della rotazione del motore Controller VEX IQ con diagramma dei pulsanti

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 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.

Dichiarazione condizionale se viene premuto Controller E Up

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 E Su o E 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 continuo

Vantaggi

Limitazioni

Situazione di esempio

  • 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 F 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.

Utilizzando gli eventi invece del Forever Loop

Scarica il file di progetto VEXcode IQ (2a generazione) "Opzione 3" >

Nota: se si utilizza un Clawbot di prima generazione, il motore del braccio dovrà essere invertito nella configurazione del dispositivo per funzionare come previsto nel progetto sopra.

Spiegazione del codice dell'Opzione 3.

Pezzo di codice

Spiegazione

Imposta l'arresto di ArmMotor su Hold e imposta l'arresto di ClawMotor su Hold

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.

Imposta la velocità del motore sinistro sulla posizione % del controller A e fai girare il motore sinistro in avanti Controller VEX IQ con diagramma dei pulsanti

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.

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.

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 E Su o E 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

Situazione di esempio

  • 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)
  • Se si utilizza un VEX IQ Brain di prima generazione, la presenza di troppi eventi in un progetto potrebbe comportare la mancata esecuzione del progetto, a causa delle limitazioni di elaborazione del Brain.
  • 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 F 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: