Skip to main content

Lección 4: Flujo del proyecto con bucles anidados

Recoger los dos discos siguientes

  • Ahora que el robot VR está frente a los discos rojos, el robot VR tendrá que repetir los mismos comportamientos que se utilizaron para recoger el disco azul, con el fin de recoger y mover el disco rojo. Los comportamientos de conducir hacia adelante para recoger el disco, darse la vuelta y conducir de vuelta al mismo objetivo de color para dejar el disco.

    Vista de arriba hacia abajo del Disk Mover Playground con flechas punteadas que indican la ruta del VR Robot desde el objetivo rojo para recoger el disco rojo y soltarlo en el objetivo, luego apuntando a la derecha para moverse al objetivo verde.
  • Una vez que se mueve el primer disco rojo, el robot VR deberá conducir hasta el objetivo verde y realizar las mismas acciones que se utilizaron para mover el disco azul y rojo, para mover el primer disco verde.

    Vista de arriba hacia abajo del Disk Mover Playground al principio, con flechas punteadas que indican la ruta que el robot necesita mover para recoger cada disco. Las flechas apuntan hacia y desde cada objetivo al primer disco, y las flechas derechas adicionales apuntan entre cada una de las áreas de objetivo.
  • Para repetir comportamientos varias veces, se puede utilizar un bucle por.
    Comando VEXcode VR Python for Loop dentro de la definición principal. El comando lee el valor en el rango con un 10 entre paréntesis de dos puntos en la primera línea, luego con sangría debajo de un comando de espera lee espera con 5 MILISEGUNDOS entre paréntesis.
  • Agregue un bucle para en la parte superior del proyecto, encima del primer comentario, y configure el parámetro de función rango en '3'. Asegúrese de que el bucle para esté sangrado dentro de la definición principal.

    def main():
        for repeat_count in range(3):
            wait(5, MSEC)
  • Para copiar el código en el bucle for , será necesario prestar especial atención a la sangría. Primero, agregue espacio antes del comando wait , para que el bucle se vea así:

    def main():
        for repeat_count in range(3):
    
    
            
            wait(5, MSEC)
  • A continuación, seleccione los comandos que desea colocar en el bucle for y cópielos y péguelos encima del comando wait . Tenga en cuenta que la sangría será incorrecta después de simplemente copiar y pegar. La línea indicadora gris del bucle para está rota y desconectada del comando esperar . Esta es una señal visual de que su proyecto no se ejecutará según lo previsto.El proyecto desde arriba, copia pegada en el bucle for, con sangría incorrecta. La sangría correcta se muestra en el siguiente bloque de código.
  • Seleccione los comandos dentro del bucle para y use "Tab" para sangrar correctamente los comandos dentro del bucle. Cuando está correctamente sangrada, la línea indicadora gris debe conectar el bucle para con el comando esperar  para mostrar los límites del bucle externo. Cuando esté completo, su proyecto debe verse así: 

    def main():
        for repeat_count in range(3):
            # 1. Conduzca al disco usando Down Eye Sensor
            mientras no estédown_eye.near_object ()
                :              drivetrain.drive(FORWARD)
                wait(5, MSEC)
            drivetrain.stop()
    
            # 2. Recoge el disco
            magnet.energize(BOOST)
    
            # 3. Conduzca hasta la meta usando el sensor
            de distancia drivetrain.turn_to_heading (180, GRADOS)
            mientras front_distance.get_distance (MM) > 200
                :drivetrain.drive (FORWARD)
                wait(5, MSEC)
            drivetrain. stop()
    
            # 4. Suelte el disco en
            goalmagnet.energize (DROP
            )          drivetrain.drive_for(REVERSE, 100, MM)
    
            # 5. Gire y conduzca al siguiente objetivo
            drivetrain.turn_to_heading(90, GRADOS)
            drivetrain.drive_for(ADELANTE, 800, MM)
    
            # 6. Gire a discos
            drivetrain.turn_to_heading(0, GRADOS)  
    
        espere(5, MSEC)
  • Mire el video a continuación para ver cómo mover los comandos y ajustar la sangría como se describió anteriormente. En el videoclip, se resaltan las seis secciones de comentarios del proyecto y se abre el menú contextual. Se selecciona la opción ‘Cortar’ y luego el cursor se coloca debajo del comando for Loop. El menú contextual se abre de nuevo y se selecciona "Pegar". Los comandos entonces están dentro del bucle para , pero sangrados incorrectamente. Las seis secciones de comentarios se resaltan de nuevo y se pulsa ‘Tab’ en el teclado para sangrar correctamente el proyecto dentro del bucle.
Archivo de vídeo
  • Abra Disk Mover Playground si aún no está abierto y ejecute el proyecto.
  • Cuando se ejecuta este proyecto, el robot VR recoge y deja caer un disco de cada color en su objetivo de color correspondiente.

    Una vista de arriba hacia abajo del robot de realidad virtual al final del proyecto, con uno de cada disco de color en la portería coincidente y el robot de realidad virtual mirando hacia la pared lateral derecha en el borde de la portería verde en la esquina inferior derecha.

Para su información

Tenga en cuenta que el robot de realidad virtual siguió chocando contra la pared. Se espera este comportamiento ya que el proyecto instruyó al robot de realidad virtual para que girara a la derecha y condujera hacia la siguiente meta, tres veces. La primera vez es conduciendo de azul a rojo. La segunda es de rojo a verde, y la tercera es de verde a la pared, ya que no hay otra portería de color. Detenga el proyecto una vez que el robot VR golpee la pared. El proyecto podría mejorarse para que el robot VR se detenga después de recoger y mover el disco verde, pero esto aumentaría la complejidad general del proyecto.

Una vista de arriba hacia abajo del robot de realidad virtual al final del proyecto, con el botón Detener en la ventana del patio de recreo resaltado en la esquina izquierda. En el patio de recreo, uno de cada disco de color en la portería coincidente y el robot VR mirando hacia la pared lateral derecha en el centro de la portería verde, cuando se presionó el botón de parada.

 

 

Preguntas

Seleccione un enlace a continuación para acceder al cuestionario de la lección.

Google Doc / .docx / .pdf