Skip to main content

Lezione 2: Utilizzo del blocco [Wait until]

In questa lezione, creerai un progetto utilizzando il sensore paraurti e il blocco [Attendi fino a]. Nella mini-sfida, applicherai queste abilità per navigare dall'inizio del Labirinto del Muro alla lettera "A".

Vista laterale del Wall Maze Playground con il robot VR direttamente di fronte a un muro, che mostra che le pareti sono tridimensionali e il robot può entrare in collisione con esse.

Risultati di apprendimento

  • Identifica che i blocchi non in attesa hanno lo stack che continua anche se il comportamento del blocco non è ancora completo.
  • Identifica che un blocco in attesa mette in pausa lo stack fino a quando il comportamento di quel blocco non è stato completato.
  • Identificare che l'evidenziazione dell'esecuzione del progetto visualizzi blocchi in attesa rispetto a blocchi non in attesa.
  • Identificare che il blocco [Wait until] è un blocco di controllo che accetta valori booleani.
  • Identificare che il blocco [Wait until] controllerà ripetutamente una condizione booleana e non passerà al blocco successivo fino a quando la condizione non riporta TRUE.
  • Identificare che il blocco [Wait until] venga utilizzato con un blocco non in attesa (ad es. Drive) per verificare le condizioni del sensore.
  • Identificare che il <Pressing bumper> blocco riporti un valore VERO o FALSO in un blocco [Wait until].
  • Identificare in che modo i blocchi [Drive for] e [Turn for] sono blocchi speciali che possono essere in attesa o non in attesa.
  • Descrivere come creare un progetto con un robot VR che avanza fino a quando non viene premuto il sensore paraurti.

Nomina e salva il progetto

  • Avviare un nuovo progetto in VEXcode VR e denominare il progetto Unit4Lesson2.
Casella del nome del progetto al centro della barra degli strumenti VEXcode VR, evidenziata con una casella rossa, a sinistra del pulsante Seleziona parco giochi.

[Attendi fino a] Blocchi

Il blocco [Wait until] è un blocco di controllo che accetta le condizioni booleane. [Attendere fino a] blocchi controllano ripetutamente una condizione booleana e controllano il flusso del progetto. Un progetto non passerà al blocco successivo nella pila fino a quando la condizione nel blocco [Attendi fino a] non viene segnalata come VERA. I blocchi [Wait until] vengono utilizzati in combinazione con blocchi non in attesa come [Drive] o [Turn].

Per tua informazione

I blocchi non in attesa e in attesa determinano quando il blocco successivo inizia un comportamento. I blocchi in attesa, come [Drive for] e [Turn for], completano i loro comportamenti prima di passare al blocco successivo nello stack. I blocchi non in attesa, come [Drive] e [Turn], continuano a passare al blocco successivo nello stack anche se il comportamento del blocco non in attesa non è completo.

Alcuni blocchi, come [Drive for] e [Turn for] possono essere blocchi in attesa o non in attesa. Selezionando la freccia sul blocco si trasformerà il blocco da in attesa in un blocco non in attesa.

Viene mostrato un azionamento per il blocco con la freccia a destra del blocco chiuso e aperto. Sulla parte superiore, un drive per blocco legge Drive forward per 200 mm. Nella parte inferiore, lo stesso blocco viene esteso per leggere Drive forward per 200 mm e non aspettare.

Utilizzo di blocchi di interruttori

Il blocco Switch non-waiting aggiunge un parametro "wait=False" alla fine del blocco. "wait=False" è il comando Python che dice al blocco di non attendere e di continuare a passare ai blocchi successivi nello stack.

Il blocco Switch equivalente viene mostrato con l'azionamento per il comando come comando in attesa e non in attesa. In alto, il comando Python nel blocco Switch legge il punto di trasmissione drive_for (FORWARD, 200, MM).. Nella parte inferiore, lo stesso comando viene esteso per leggere il punto di trasmissione drive _ for (FORWARD, 200, MM, wait = false).

  • Trascinare il blocco [Drive] non in attesa nell'area di lavoro.

    Un nuovo progetto VEXcode VR con un blocco Quando avviato con un blocco di azionamento collegato e impostato su avanti.
  • Collegare un blocco [Wait until] sotto il blocco [Drive].

    Lo stesso progetto con un blocco di attesa aggiunto al fondo della pila. Il parametro del blocco Wait until è vuoto.
  • Il blocco [Wait until] accetta le condizioni booleane. Questo progetto utilizzerà il sensore paraurti per guidare attraverso il labirinto del muro Playground. Trascinare il blocco <Pressing bumper> booleano nel blocco [Wait until].

    Lo stesso progetto con un blocco Bumper premuto aggiunto al parametro del blocco Wait until. Il progetto ora recita All'avvio, vai avanti, attendi fino a quando non viene premuto il paraurti sinistro.
  • Trascina un blocco [Stop driving] e aggiungilo al progetto.

    Lo stesso progetto con un blocco stop driving aggiunto sotto il blocco wait until. Il progetto ora recita All'avvio, vai avanti, attendi fino a quando non viene premuto il paraurti sinistro, quindi smetti di guidare.
  • Avviare il Wall Maze Playground se non è già aperto ed eseguire il progetto.
  • Guarda il robot VR guidare dall'inizio del labirinto a parete e fermati quando il sensore paraurti viene premuto dalla parete.
  • Il blocco [Drive] consente al robot VR di continuare a guidare in avanti mentre controlla le condizioni del sensore paraurti con il <Pressing bumper> blocco. Una volta che i <Pressing bumper> rapporti sono VERI, il robot VR si sposterà al blocco successivo nello stack e smetterà di guidare.

    Il progetto VEXcode VR di questa lezione è stato suddiviso per mostrare il flusso del progetto. Il blocco Quando avviato è seguito dal blocco di avanzamento. Una freccia dorata punta verso il basso dal blocco drive forward al blocco Wait until left bumper pressed. A destra del blocco ci sono 2 frecce rosse curve che indicano un movimento circolare e le parole "non premute (false) che" mostrano cosa succede quando il robot avanza e l'interruttore del paraurti non viene premuto. Sotto il blocco Attendi fino a, una freccia verde che punta verso il basso sul blocco di guida di arresto con le parole "premute (vero)" indica che il progetto si sposterà sul blocco di guida di arresto quando viene premuto l'interruttore del paraurti.

    Per tua informazione

    Per seguire una visualizzazione dei blocchi in attesa rispetto a quelli non in attesa, guarda la funzione di evidenziazione dell'esecuzione del codice in VEXcode VR. All'inizio di questo progetto, l'evidenziazione verde apparirà intorno al blocco [Attendi fino a] fino a quando la condizione non viene soddisfatta. Questo perché il blocco [Wait until] è un blocco in attesa. L'evidenziazione verde apparirà per saltare i blocchi non in attesa perché questi comandi vengono eseguiti rapidamente.

    Progetto VEXcode VR da questa lezione con una casella di callout rossa attorno al blocco Attendi fino a, che indica che si tratta di un blocco in attesa.

     

    Utilizzo di blocchi di interruttori 

    Questo è il blocco Switch contenente il comando [Wait until] con il <Bumper pressed>  Reporter booleano.

    Progetto VEXcode VR come sopra, ma con il blocco Wait until sostituito con un blocco Switch. Il comando Python nel blocco Switch legge while not left_bumper.pressed(): sulla prima riga. Quindi rientrato sotto il blocco Python legge wait (5, msec).

    while not left_bumper.pressed(): è il comando Python che controlla se il paraurti sinistro è attualmente premuto.

    wait (5, MSEC) è un comando Python che mette in pausa l'esecuzione del controllo per 5 millisecondi (MSEC), quindi il progetto controlla se viene premuto o meno il paraurti sinistro ogni 5 MSEC. Questa riga di codice è rientrata sotto la prima riga di codice perché questo comando è il comportamento che si ripeterà fino a quando non verrà soddisfatta la condizione (in questo caso, il paraurti sinistro premuto).

    In VEXcode VR, un comando wait viene sempre aggiunto con un ciclo condizionale . Lo scopo del comando wait è garantire che VEXcode VR possa eseguire correttamente il progetto come previsto, a causa della natura basata sul web della piattaforma VEXcode VR. Il comando wait non dovrebbe mai essere eliminato quando si utilizza un ciclo condizionale, perché il progetto potrebbe non funzionare come previsto.

    Una volta premuto il paraurti sinistro, il robot smetterà di guidare.

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