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".

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.

[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.

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.

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

-
Collegare un blocco [Wait until] sotto il blocco [Drive].

-
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].

-
Trascina un blocco [Stop driving] e aggiungilo al progetto.

- 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.

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.

Utilizzo di blocchi di interruttori
Questo è il blocco Switch contenente il comando [Wait until] con il <Bumper pressed>
Reporter booleano. 
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.