Skip to main content

Lezione 3: Utilizzo delle istruzioni If

Navigazione nel labirinto del disco utilizzando le istruzioni If 

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 si allinea a un comportamento diverso che il robot VR dovrebbe eseguire.

Per tua informazione

L'istruzione if accetta solo condizioni booleane. 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 viene segnalata come Vera o Falsa.

se condizione: 
	superato

L'istruzione if verrà eseguita una 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 dell'istruzione if - girare a destra per 90 gradi. Se non viene rilevato un oggetto verde, il progetto passerà al comando successivo.

def main():
    if front_eye.detect(GREEN):
        drivetrain.turn_for(RIGHT, 90, DEGREES)
    drivetrain.stop()
  • Avviare un nuovo progetto e selezionare Disk Maze Playground quando richiesto. Piastrella di selezione del labirinto del disco in VEXcode VR.
  • Chiamalo Unit7Lesson3.Barra degli strumenti in VEXcode VR con la casella del nome del progetto richiamata. Il nome del progetto recita Unità 7 Lezione 3.

     

  • Aggiungere commenti per descrivere l' intenzione per i comportamenti del Robot VR durante ogni sezione successiva del progetto. 
def main():
    # Se l'occhio anteriore rileva il verde, girare a destra

    # Se l'occhio anteriore rileva il blu, girare a sinistra
  • Trascina o digita l'istruzione if sotto il primo commento.
def main():
    # Se l'occhio anteriore rileva il verde, girare a destra
    se la condizione: 
    	passa

    # Se l'occhio anteriore rileva il blu, girare a sinistra
  • Imposta la condizione dell'istruzione if sul comando front_eye.detect e imposta il parametro su 'GREEN.'
def main():
    # If front eye detects green then turn right
	if front_eye.detect(GREEN): 
    	pass
    	
    # If front eye detects blue then turn left
  • Trascinare o digitare un comando turn_for all'interno dell'istruzione if , per sostituire 'pass'. Impostare i parametri per girare a destra di 90 gradi. Ora, se il sensore dell'occhio anteriore rileva "VERDE", il robot VR ruoterà a destra di 90 gradi.
def main():
    # If front eye detects green then turn right
	if front_eye.detect(GREEN): 
    	drivetrain.turn_for(RIGHT, 90, DEGREES)
    	
    # If front eye detects blue then turn left
  • Seguiremo gli stessi passaggi per aggiungere ulteriori istruzioni if per tutti e tre i colori nel Labirinto dei Dischi (verde, blu e rosso). Ogni colore è associato a un comportamento diverso. I comandi all'interno delle istruzioni if dovranno corrispondere al comportamento previsto. Aggiungere i seguenti comandi al progetto sotto il secondo commento, in modo che se il sensore dell'occhio anteriore rileva il colore "BLU", il robot VR ruoterà a sinistra di 90 gradi.
	# If front eye detects blue then turn left
	if front_eye.detect(BLUE): 
    	drivetrain.turn_for(LEFT, 90, DEGREES)
  • Quando il robot VR raggiunge la fine del labirinto, il sensore oculare anteriore rileverà il colore "ROSSO".

    Una vista ravvicinata del Robot VR che arriva al disco rosso alla fine del Labirinto del Disco e si ferma di fronte ad esso.
  • Per fermare il robot VR, è necessario aggiungere un'altra istruzione se con le istruzioni su cosa fare se il sensore dell'occhio frontale rileva "ROSSO". Aggiungere il seguente commento e comandi al progetto in modo che il robot VR smetta di guidare se rileva "ROSSO". 
	# If front eye detects red then stop
	if front_eye.detect(RED): 
    	drivetrain.stop()

Se nessuno dei colori viene rilevato

Il robot VR può anche prendere una decisione se non vede un colore utilizzando il valore "none". Ad esempio, al punto di partenza del Labirinto Disco, il Sensore Occhio Anteriore 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. Un'altra istruzione se  può essere aggiunta per indicare al robot VR cosa fare quando non viene rilevato alcun colore. 

  • Aggiungere il seguente commento e comandi al progetto, in modo che se il sensore oculare anteriore non rileva alcun colore, il robot VR avanzerà.
	# If front eye detects none then drive forward
	if front_eye.detect(NONE): 
    	drivetrain.drive(FORWARD)
  • Il robot VR dispone ora di istruzioni per ciascun colore rilevato dal sensore oculare anteriore.
    • Se il sensore dell'occhio anteriore rileva "VERDE" – Girare a destra di 90 gradi
    • Se il sensore dell'occhio anteriore rileva "BLU" –  Girare a sinistra di 90 gradi
    • Se il sensore dell'occhio anteriore rileva "ROSSO" – Smetti di guidare
    • Se il sensore dell'occhio anteriore rileva "NESSUNO" – Guida in avanti
  • Aprire la finestra del parco giochi se non è già aperta. Assicurarsi che Disk Maze Playground si apra ed eseguire il progetto. L'intero progetto dovrebbe essere simile a questo: 
def main():
    # If front eye detects green then turn right
    if front_eye.detect (GREEN):
        drivetrain.turn_for (RIGHT, 90, DEGREES)

    # If front eye detects blue then turn left
    if front_eye.detect (BLUE):
        drivetrain.turn_for (LEFT, 90, DEGREES)

    # If front eye detects red then stop
    if front_eye.detect (RED): 
        drivetrain.stop ()

    # If front eye detects none then drive forward
    if front_eye.detect (NONE): 
        drivetrain.drive (FORWARD)
  • Il robot VR si comporta come previsto? Perché sì o perché no? Nella prossima pagina della lezione, impareremo di più su questo progetto.

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