Skip to main content

Lezione 3: Flusso del progetto con più cicli While

Ora che hai creato un progetto di testo per navigare nel robot VR fino alla lettera "A" sul Wall Maze Playground, espanderai le tue abilità usando condizionali e valori del sensore. In questa lezione, navigherai nel robot VR fino al numero "2" nel Wall Maze Playground, quindi esplorerai perché sono necessari comandi aggiuntivi per guidare fino alla lettera "B". Nella mini-sfida, applicherai queste abilità per navigare dall'inizio del Labirinto del Muro al numero "3".

Una vista dall'alto verso il basso del parco giochi Wall Maze con il robot VR che inizia sulla freccia verde in basso al centro del parco giochi. Il numero 2 è evidenziato in un riquadro rosso, ed è posizionato al centro del quadrante inferiore sinistro del labirinto, più a sinistra oltre la lettera A. Il numero 2 in un angolo creato da tre pareti che lo circondano.

Risultati di apprendimento

  • Descrivere il flusso del programma in un progetto che ha un robot VR che avanza fino a quando non viene premuto il sensore paraurti.

Rinomina il progetto

  • Se il progetto della lezione precedente non è già stato caricato, caricare il progetto Unit4Lesson2.
  • Rinominare il progetto Unit4Lesson3.La barra degli strumenti VEXcode VR mostra l'Unità 4 Lezione 3 come nome del progetto. Il nome del progetto è evidenziato con un riquadro rosso.

     

 

Flusso del progetto da portare alla lettera "A"

Nella lezione precedente, il robot VR si è recato alla lettera "A" nel labirinto muro parco giochi. Analizziamo il flusso del progetto mentre ci prepariamo a navigare verso una nuova posizione nel Labirinto del Muro.

Una vista dall'alto verso il basso del Wall Maze Playground con il robot VR nella posizione di partenza nella parte centrale inferiore del parco giochi. La lettera A si trova direttamente a sinistra del robot, separata da una parete corta.
  • Per comprendere meglio il flusso del progetto per guidare fino alla lettera "A" sul Wall Maze Playground, inizia modificando il tuo progetto precedente o crea un nuovo progetto che corrisponda a questo progetto di base.

    def main():
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • Quando un progetto utilizza un ciclo while con una condizione not , il flusso del programma del progetto segue comunque la stessa sequenza dall'alto verso il basso. Il ciclo while consente al flusso del programma di "mettersi in pausa" in un certo punto, mentre viene soddisfatta una condizione. L'operatore non  consente al progetto di rimanere nel ciclo finché la condizione non viene segnalata come False. Quindi il progetto passerà al comando successivo al di fuori del ciclo. Una condizione booleana, come il paraurti sinistro premuto, riporterà un valore vero o falso. In questo codice per guidare il robot VR alla lettera "A", il robot VR avanzerà fino a quando la condizione booleana del paraurti sinistro premuto non sarà True.
    Il flusso di progetto del progetto da guidare alla lettera "A" sarebbe simile a questo:Un diagramma di flusso del progetto che descrive il flusso del progetto di cui sopra per passare alla lettera A, che è mostrata a sinistra. A destra, le frecce indicano come scorre il progetto. Innanzitutto, una freccia ciclica rossa illustra che mentre il paraurti non è premuto, la condizione del ciclo while restituisce false, quindi il robot avanza. Una freccia verde verso il basso illustra che quando si preme il paraurti, la condizione riporta true, quindi il progetto esce da quel loop e il robot gira a sinistra di 90 gradi. Questa sequenza viene ripetuta per ogni ciclo nel progetto.

Il comportamento del robot VR mostra come viene eseguito ogni ciclo mentre . Scomposto accanto al movimento del robot VR, possiamo vedere chiaramente dove è andato a finire il robot VR dopo ogni ciclo di esecuzione del progetto.A sinistra viene mostrato il codice Python che contiene tre cicli while sequenziali, ciascuno dei quali indica al robot di avanzare fino a quando non viene premuto il paraurti sinistro. Una volta premuto il paraurti in ogni loop, il robot esegue un'azione specifica.  Nel primo anello, il robot avanza fino a premere il paraurti, quindi gira a sinistra di 90 gradi. L'immagine a destra mostra la posizione del robot in un labirinto dopo questa azione, contrassegnata da un cerchio giallo.  Nel secondo anello, il robot avanza di nuovo fino a quando il paraurti non viene premuto e poi gira a sinistra di 90 gradi. La seconda immagine mostra la posizione aggiornata del robot nel labirinto dopo questo turno.  Nel terzo e ultimo ciclo, il robot avanza fino a quando il paraurti non viene premuto. Quando si preme il paraurti, il robot smette di muoversi. L'immagine finale mostra la posizione di arresto del robot all'interno del labirinto, sempre evidenziata da un cerchio giallo.

 

Guida fino al numero "2"

In questa lezione, il progetto verrà modificato in modo che il robot VR si sposti verso il numero "2" sul muro del labirinto del parco giochi!

Una vista dall'alto verso il basso del parco giochi Wall Maze con il robot VR che inizia sulla freccia verde in basso al centro del parco giochi. Il numero 2 è evidenziato in un riquadro rosso, ed è posizionato al centro del quadrante inferiore sinistro del labirinto, più a sinistra oltre la lettera A. Il numero 2 in un angolo creato da tre pareti che lo circondano.
  • Il progetto della lezione 2 ha il robot VR che gira a sinistra per guidare alla lettera "A". Per passare al numero "2", il robot VR dovrà invece girare a destra, avanzare e quindi girare a sinistra.

    Una vista dall'alto verso il basso del Wall Maze Playground in cui il robot VR è posizionato sopra il marcatore A, di fronte alla parete sinistra. Una freccia rossa punta verso A e tre frecce verdi mostrano il percorso previsto per il numero 2. Le frecce verdi puntano verso l'alto verso la parete opposta ad A, poi a sinistra verso la parete successiva a sinistra del numero 2, quindi verso il basso nell'angolo che contiene il numero 2.
  • Cambia la direzione del secondo comando turn_for da sinistra a destra. Il tuo progetto dovrebbe assomigliare a questo:

    def main():
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop()
  • Avviare il Wall Maze Playground se non è già aperto ed eseguire il progetto.
  • Guarda il robot VR che inizia a guidare verso il numero "2", ma si ferma davanti a un muro. Pertanto, il robot VR deve girare a sinistra una volta premuto contro il muro invece di fermarsi.

    Una vista dall'alto verso il basso del parco giochi Wall Maze con il robot VR rivolto verso la parete di fronte alla lettera A, rivolto verso l'alto.
  • Selezionare il pulsante "Reset" per ripristinare il parco giochi e riportare il robot VR alla posizione di partenza.Il Wall Maze Playground che mostra l'intera interfaccia del parco giochi. Il pulsante di reset in basso a sinistra dell'interfaccia del parco giochi è evidenziato con un riquadro rosso.

     

  • Modifica il codice rimuovendo il comando stop e sostituendolo con i seguenti comandi per guidare il robot VR al numero '2'.

    def main():
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    	
    	drivetrain.stop ()
  • Avviare il Wall Maze Playground se non è già aperto ed eseguire il progetto.
  • Guarda il robot VR guidare fino al numero '2' nel labirinto muro Playground!

    Una vista dall'alto verso il basso del parco giochi Wall Maze. Il robot VR è ora posizionato sopra il marcatore 2, rivolto verso la parete inferiore con la parte anteriore premuta contro la parete.
  • Selezionare il pulsante "Reset" per ripristinare il parco giochi e riportare il robot VR alla posizione di partenza.

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