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.
Riepilogo dell'opzione 1: assegnazione dei pulsanti nella configurazione del dispositivo
Vantaggi |
Limitazioni |
Situazione di esempio |
|
|
|
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.
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 |
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. |
|
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. |
|
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 |
|
|
|
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.
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 |
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. |
|
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. |
|
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 |
|
|
|