Lección 2: Uso del bloque [Esperar hasta]
En esta lección, creará un proyecto utilizando el sensor de parachoques y el bloque [Esperar hasta]. En el mini-desafío, aplicarás estas habilidades para navegar desde el comienzo del laberinto de la pared hasta la letra "A".

Resultados de aprendizaje
- Identifique que los bloques que no están en espera hacen que la pila continúe incluso si el comportamiento del bloque aún no se ha completado.
- Identifique que un bloque en espera detiene la pila hasta que se haya completado el comportamiento de ese bloque.
- Identifique que el resaltado de la ejecución del proyecto visualiza los bloques en espera frente a los que no lo están.
- Identifique que el bloque [Esperar hasta] es un bloque de control que acepta valores booleanos.
- Identifique que el bloque [Esperar hasta] comprobará repetidamente una condición booleana y no se moverá al siguiente bloque hasta que la condición SEA VERDADERA.
- Identifique que el bloque [Esperar hasta] se utiliza con un bloque que no está en espera (por ejemplo, Drive) para verificar el estado del sensor.
- Identifica que el <Pressing bumper> bloque reporta un valor VERDADERO o FALSO en un bloque [Esperar hasta].
- Identifica cómo los bloques [Drive for] y [Turn for] son bloques especiales que pueden estar en espera o no.
- Describa cómo crear un proyecto que tenga una unidad de robot VR hacia adelante hasta que se presione el sensor del parachoques.
Nombrar y guardar el proyecto
- Inicie un nuevo proyecto en VEXcode VR y nombre el proyecto Unit4Lesson2.

[Esperar hasta] Bloques
El bloque [Esperar hasta] es un bloque de control que acepta condiciones booleanas. Los bloques [Wait until] comprueban repetidamente una condición booleana y controlan el flujo del proyecto. Un proyecto no se moverá al siguiente bloque de la pila hasta que la condición en el bloque [Esperar hasta] se informe como VERDADERA. Los bloques [Esperar hasta] se utilizan junto con bloques que no están en espera, como [Conducir] o [Girar].
Para su información
Los bloques que no son de espera y de espera determinan cuándo comienza un comportamiento el siguiente bloque. Los bloques de espera, como [Drive for] y [Turn for], completan sus comportamientos antes de pasar al siguiente bloque de la pila. Los bloques que no están en espera, como [Drive] y [Turn], continúan moviéndose al siguiente bloque de la pila incluso si el comportamiento del bloque que no está en espera no está completo.
Ciertos bloques, como [Drive for] y [Turn for], pueden ser bloques en espera o no en espera. Al seleccionar la flecha en el bloque, el bloque dejará de esperar para convertirse en un bloque que no espera.

Uso de bloques de interruptores
El bloque sin espera Switch agrega un parámetro "wait=False" al final del bloque. "wait=False" es el comando de Python que le dice al bloque que no espere y que continúe moviéndose a los siguientes bloques de la pila.

-
Arrastre el bloque de no espera [Drive] al área de trabajo.

-
Adjunte un bloque [Esperar hasta] debajo del bloque [Conducir].

-
El bloque [Esperar hasta] acepta condiciones booleanas. Este proyecto utilizará el sensor de parachoques para conducir a través del laberinto de pared Patio de juegos. Arrastre el bloque <Pressing bumper> booleano al bloque [Esperar hasta].

-
Arrastra un bloque [Stop driving] y añádelo al proyecto.

- Inicie el Wall Maze Playground si aún no está abierto y ejecute el proyecto.
- Observe el accionamiento del robot VR desde el inicio del laberinto de pared y deténgase cuando el sensor de parachoques sea presionado por la pared.
-
El bloque [Drive] permite que el robot VR siga avanzando mientras comprueba el estado del sensor del parachoques con el <Pressing bumper> bloque. Una vez que los <Pressing bumper> informes SEAN VERDADEROS, el robot VR se moverá al siguiente bloque de la pila y dejará de conducir.

Para su información
Para seguir una visualización de los bloques en espera frente a los que no lo están, observe la función de resaltado de ejecución de código en VEXcode VR. Al comienzo de este proyecto, el resaltado verde aparecerá alrededor del bloque [Esperar hasta] hasta que se cumpla la condición. Esto se debe a que el bloque [Esperar hasta] es un bloque de espera. El resaltado verde aparecerá para omitir los bloques que no están en espera porque estos comandos se ejecutan rápidamente.

Uso de bloques de interruptores
Este es el bloque Interruptor que contiene el comando [Esperar hasta] con el <Bumper pressed>
Boolean reporter. 
while not left_bumper.pressed(): es el comando de Python que comprueba si el parachoques izquierdo se está pulsando actualmente. wait (5, MSEC) es un comando de Python que detiene la ejecución de la comprobación durante 5 milisegundos (MSEC), por lo que el proyecto comprueba si se pulsa o no el parachoques izquierdo cada 5 MSEC. Esta línea de código está sangrada debajo de la primera línea de código porque este comando es el comportamiento que se repetirá hasta que se cumpla la condición (en este caso, el parachoques izquierdo presionado). En VEXcode VR, un comando wait siempre se agrega con un bucle condicional . El propósito del comando wait es garantizar que VEXcode VR pueda ejecutar correctamente el proyecto según lo previsto, debido a la naturaleza basada en la web de la plataforma VEXcode VR. El comando wait nunca debe eliminarse cuando se usa un bucle condicional , porque su proyecto puede no ejecutarse como se esperaba. Una vez pulsado el parachoques izquierdo, el robot dejará de conducir.
Seleccione el botón Siguiente para continuar con el resto de esta lección.