Skip to main content

Lezione 3: Utilizzo dei blocchi [If then]

Nella Disk Maze Challenge, il robot VR sta controllando le condizioni del sensore dell'occhio anteriore per vedere di che colore viene segnalato. Ciascuno dei colori corrisponde a un comportamento diverso che il robot VR dovrebbe eseguire.

Blocco VEXcode VR If Then C con un parametro booleano di "L'occhio anteriore rileva il rosso?".
  • Avvia un nuovo progetto e chiamalo Unit7Lesson3.

    Barra degli strumenti VEXcode VR con il pulsante "Nome progetto" evidenziato in una casella rossa, a sinistra del pulsante Seleziona parco giochi. Il nome del progetto è impostato su Unità 7 Lezione 3.
  • Trascinare un blocco [If then] nell'area di lavoro e collegarlo al blocco [When started].

    VEXcode VR blocca il programma con un blocco All'avvio e un blocco If Then C vuoto.

    Per tua informazione

    Il blocco [If then] è un blocco C che accetta blocchi reporter booleani come input. Utilizzando i modelli osservati durante la risoluzione del labirinto del disco nella lezione 2, è possibile creare un progetto in cui il robot VR prende una decisione se la condizione È VERA o FALSA.

    Blocco VEXcode VR If Then C con una casella rossa che evidenzia lo spazio dei parametri booleani.

    Il blocco [If then] verrà eseguito una sola volta in un progetto. In questo esempio, il Front Eye Sensor segnalerà TRUE se viene rilevato un oggetto verde ed eseguirà il comando all'interno del blocco C - girare a destra per 90 gradi. Se non viene rilevato un oggetto verde, il progetto passerà al comando successivo nello stack.

    VEXcode VR blocca il progetto che gira a destra se l'occhio anteriore rileva il colore verde. Il progetto recita: All'avvio, se l'occhio anteriore rileva il verde, girare a destra di 90 gradi. Al di fuori dell'istruzione if è presente un blocco di arresto della guida.

    Utilizzo di blocchi di interruttori 


    L'immagine seguente mostra l'istruzione di blocco Switch [If then] per il progetto di esempio di questa lezione. 

    Lo stesso progetto VEXcode VR blocca ma con blocchi di interruttori inclusi, che gira a destra se l'occhio anteriore rileva il colore verde. Il progetto inizia con un blocco All'avvio ed è seguito da una versione del blocco C dell'interruttore di un blocco If Then. Il codice Python recita "if front_eye.detect(GREEN): drivetrain.turn_for(RIGHT, 90, DEGREES)". Al di fuori dell'istruzione if è presente un blocco di arresto della guida.

    Il progetto seguente include gli stessi comandi convertiti in un blocco Switch.  

    La prima riga di codice, se front_eye.detect(VERDE): è il loop condizionale che controlla se il Front Eye Sensor rileva il colore verde. Si noti che alla fine di questa riga dovrebbero esserci i due punti (:). 

    La seconda riga di codice, drivetrain.turn_for(a DESTRA, 90, GRADI) dice al robot di girare a destra per 90 gradi quando il sensore oculare anteriore rileva il colore verde. Questa riga è rientrata con un valore predefinito di 4 spazi perché questo è il comportamento specifico che verrà eseguito se il sensore oculare anteriore rileva il verde. 

    Lo stesso progetto VEXcode VR blocca ma con blocchi di interruttori inclusi, che gira a destra se l'occhio anteriore rileva il colore verde. Il progetto inizia con un blocco All'avvio ed è seguito da una versione del blocco C dell'interruttore di un blocco If Then. Il codice Python recita "if front_eye.detect(GREEN): drivetrain.turn_for(RIGHT, 90, DEGREES)". Al di fuori dell'istruzione if è presente un blocco di arresto della guida.

  • Trascinare un <Color sensing> blocco nell'area di lavoro nell'ingresso esagonale del blocco [If then].

    VEXcode VR blocca il progetto che utilizza un'istruzione if per rilevare il colore di un disco. Inizia con un blocco all'avvio e poi un blocco di commento che legge "se l'occhio anteriore rileva il verde, gira a destra". Infine c'è un blocco If Then vuoto con un parametro booleano di un blocco Color Sensing che dice "L'occhio anteriore rileva il rosso?".
  • Modificare il parametro del <Color sensing> blocco in "verde".

    VEXcode VR blocca il progetto che utilizza un'istruzione if per rilevare un disco verde. Inizia con un blocco all'avvio e poi un blocco di commento che legge "se l'occhio anteriore rileva il verde, gira a destra". Infine c'è un blocco If Then vuoto con un parametro booleano di un blocco Color Sensing che dice "L'occhio anteriore rileva il verde?". Il menu a discesa del colore è aperto per cambiare il colore da rosso a verde.
  • Quando il sensore dell'occhio anteriore rileva un disco verde, il robot VR dovrà girare a destra di 90 gradi per iniziare a risolvere il labirinto di dischi. Trascinare un blocco [Turn for] nel blocco [If then].

    VEXcode VR blocca il progetto che utilizza un'istruzione if per rilevare un disco verde e quindi girare a destra. Inizia con un blocco all'avvio e poi un blocco di commento che legge "se l'occhio anteriore rileva il verde, gira a destra". Infine c'è un blocco If Then con un parametro booleano di un blocco Color Sensing che dice "Front Eye detects green?" e un blocco Turn right for 90 degrees all'interno del contenitore If che si attiverà se il booleano è vero.
  • Segui questi stessi passaggi per aggiungere un altro blocco [If then] per tutti e tre i colori nel Labirinto Disco (verde, blu e rosso). Ogni colore è associato a un comportamento diverso. I blocchi all'interno del blocco [If then] dovranno corrispondere al comportamento previsto. Aggiungi i seguenti blocchi al progetto. Quando il robot VR rileva il colore "blu", il robot VR gira a sinistra di 90 gradi.

    Lo stesso VEXcode VR blocca il progetto precedente ma con un'istruzione if aggiunta per girare a sinistra se è presente un disco blu. Inizia con un blocco When Started e poi c'è un blocco If Then con un parametro booleano di un blocco Color Sensing che dice 'Front Eye detects green?' e un blocco Turn right for 90 degrees all'interno del contenitore If. Infine, c'è lo stesso se il blocco e la pila del blocco di svolta ma sono cambiati per girare a sinistra di 90 gradi se viene rilevato il colore blu.
  • Quando il robot VR raggiunge la fine del labirinto, il robot VR rileverà il colore "rosso".

    Robot VR nel parco giochi VR Disk Maze, il robot è fermo e guarda verso un disco rosso.
  • Per arrestare il robot VR, è necessario aggiungere un altro blocco [If then] con le istruzioni su cosa fare quando il robot VR rileva "rosso". Aggiungi i seguenti blocchi al progetto.

    Lo stesso VEXcode VR blocca il progetto precedente ma con un'istruzione if aggiunta per interrompere la guida se è presente un disco rosso. Inizia con un blocco When Started e poi c'è un blocco If Then con un parametro booleano di un blocco Color Sensing che dice 'Front Eye detects green?' e un blocco Turn right for 90 degrees all'interno del contenitore If. Poi c'è lo stesso se il blocco e la pila del blocco di svolta ma cambiato per girare a sinistra per 90 gradi se viene rilevato il colore blu. Infine, lo stesso vale se viene utilizzato lo stack di blocchi e blocchi di svolta, ma viene modificato in Stop Driving se viene rilevato il colore rosso.
  • Il robot VR può anche prendere una decisione se non vede un colore utilizzando il valore "none". Al punto di partenza del Disk Maze, il Robot VR non rileva alcun colore.

    La vista del parco giochi VR con il cruscotto aperto e una casella rossa che evidenzia i valori di rilevamento dell'occhio anteriore del robot. Il valore "Object" corrente è false e il valore "Color" corrente è none.
  • Poiché il sensore dell'occhio anteriore non rileva un colore all'inizio del labirinto del disco, il robot VR dovrà avanzare fino a quando non rileva il disco verde. È possibile aggiungere un altro blocco [If then] per indicare al robot VR cosa fare quando non viene rilevato alcun colore.

    Blocco VEXcode VR Color Sensing, con la scritta "L'occhio anteriore non ne rileva?". C'è un menu a discesa aperto per mostrare come l'utente può cambiare il colore di destinazione in nessuno.
  • Aggiungi i seguenti blocchi al progetto. Quando il robot VR non rileva alcun colore, il robot VR avanzerà.

    Lo stesso VEXcode VR blocca il progetto precedente ma con un'istruzione if aggiunta per andare avanti se non viene rilevato alcun disco. Inizia con un blocco When Started e poi c'è un blocco If Then con un parametro booleano di un blocco Color Sensing che dice 'Front Eye detects green?' e un blocco Turn right for 90 degrees all'interno del contenitore If. Poi c'è lo stesso se il blocco e la pila del blocco di svolta ma cambiato per girare a sinistra per 90 gradi se viene rilevato il colore blu. Successivamente, lo stesso vale se viene utilizzato lo stack di blocchi e blocchi di svolta, ma viene modificato in Stop Driving se viene rilevato il colore rosso. Infine, lo stesso vale se viene utilizzato lo stack di blocchi e blocchi di rotazione, ma viene modificato in Drive Forward se non viene rilevato alcun colore.
  • Il robot VR ora ha istruzioni per ogni colore rilevato dal sensore oculare.
    • Il sensore oculare anteriore rileva "verde?"
      • Gira a destra di 90 gradi
    • Il sensore oculare anteriore rileva "blu?"
      • Gira a sinistra di 90 gradi
    • Il sensore oculare anteriore rileva "rosso?"
      • Smetti di guidare
    • Il sensore oculare anteriore rileva "nessuno?"
      • Guida in avanti
  • Aprire il Disk Maze Playground ed eseguire il progetto.

Selezionare il pulsante Avanti per continuare con il resto della lezione.