# Guía de aprendizaje por etapas (Pybricks + Simulador EV3)

> Revisión documental: 2026-10-28. Copia cloud de remediación sobre `1.5.0`; revisiones focales disponibles. El informe y el manifiesto de cada entrega delimitan su aceptación.
> Los ejemplos y presets de `examples/` y `worlds/` son recursos de aprendizaje;
> su presencia no acredita todos los objetivos ni paridad actual con Tkinter.

Esta guía propone un orden didáctico, no una lista de ejercicios ya aprobados
en la candidata. Registrar por separado: código que finaliza, objetivo virtual
cumplido y validación física. La campaña finita del 28 de octubre de 2026 sobre
H-WEB1 reunió 54 casos: 36 ejecuciones finitas (una comprobación reutilizada),
16 bucles observados y detenidos con un límite de QA, y 2 fragmentos incompletos
del libro con sus errores esperados. No son 54 misiones logradas. Los cambios
posteriores necesitan sus regresiones pertinentes, no heredan una aprobación global.

## Etapa 1 - Fundamentos del brick

1. `01_intro_led.py`: LED y temporización básica.
2. `02_intro_pantalla_altavoz.py`: LCD, altavoz y cronómetro.

## Etapa 2 - Movimiento base

1. `03_movimiento_basico.py`: avance y giro con dos motores.
2. `04_movimiento_motores_individuales.py`: pivotes y control por encoder.
3. `05_drivebase_cuadrado.py`: trayectoria geométrica con `DriveBase`.
4. `06_drivebase_perfiles_aceleracion.py`: diferencias de perfiles dinámicos.

## Etapa 3 - Sensores esenciales

1. `07_sensor_tacto_reaccion.py`: reacción por contacto.
2. `08_sensor_ultrasonido_frenado.py`: parada por distancia.
3. `09_sensor_color_stop.py`: eventos por color.
4. `10_sensores_combinados.py`: fusión tacto + ultrasonido + color.

## Etapa 4 - Control reactivo

1. `11_siguelineas_basico.py`: siguelíneas proporcional.
2. `12_siguelineas_robusto.py`: robustez ante pérdida de línea.
3. `13_colision_controlada.py`: prueba controlada de impacto.
4. `14_navegacion_hasta_pared.py`: navegación por condición de distancia.
5. `15_esquiva_obstaculos.py`: comportamiento evasivo.
6. `16_resolver_laberinto.py`: resolver laberinto con regla de mano derecha mejorada (sondeo lateral, antioscilación y recuperación de atascos).

## Etapa 5 - Funciones avanzadas: comprobar contrato y corte

1. `17_gyro_correccion_rumbo.py`: corrección de rumbo con `GyroSensor`.
2. `18_infrarrojo_beacon_seguidor.py`: seguimiento de baliza IR. En F1 se adaptó
   este ejemplo distribuido para manejar ausencia de baliza (`None`) y rumbo en
   grados; no conservar el antiguo factor de conversión ni modificar el libro.
3. `19_motor_encoder_objetivos.py`: posiciones objetivo con `run_target`.
4. `20_motor_run_until_stalled.py`: cierre por estancamiento.
5. `21_drivebase_curva_estado.py`: arcos y telemetría; `DriveBase.curve` es una
   extensión local respecto a Pybricks EV3 v2, no una API portable garantizada.
6. `22_stopwatch_mision_etapas.py`: misión por etapas con `StopWatch`.

## Recorrido guiado y evidencia docente

El catálogo identifica capturas históricas que pueden diferir de la interfaz
actual. La imagen de tiempo máximo se sustituyó por una captura real del
28 de octubre de 2026: techo de 120 s y opciones 30, 60 y 120 s en ese entorno,
sin opción ilimitada. Contrastar el techo efectivo y el guardado con
`REFERENCIA_CONFIGURACION.md` y `MANUAL_DE_USO.md`; las opciones dependen del
servidor, no de una imagen histórica.

Además de los ejemplos, el Centro de ayuda propone recorridos verificables:
crear mundo, primera simulación, motores y sensores, depuración, misión,
trazas, tiempo máximo y diagnóstico. Marque cada paso cuando pueda comprobar
su resultado; reinicie la guía para repetir una práctica.

Para evaluación, conserve una captura del mundo, el programa final, el estado
terminal de la misión y una explicación de la lectura de un sensor. Las trazas
permiten comparar intentos, pero deben limpiarse al reiniciar antes de evaluar
un nuevo recorrido. Valide finalmente el comportamiento con el robot físico.

El ejemplo 09 puede terminar por su límite temporal propio, sin alcanzar la
condición de color. El ejemplo 17 permaneció en colisión en el escenario de
prueba histórico; terminar sus llamadas al giroscopio no acredita recorrer un
pasillo. Preparar posición inicial, superficies y objetivos antes de calificar.

## Mundos sugeridos

1. `01_linea_negra_basica.json`: ideal para color y siguelíneas.
2. `05_obstaculos_baliza_ir.json`: obstáculos generales y pruebas de reacción.
   La versión distribuida tiene vacía la lista de balizas; no sirve por sí sola
   para acreditar seguimiento de una baliza.
3. `06_pasillo_gyro_rumbo.json`: pasillo para giro y rumbo con gyro.
4. `07_laberinto_v1.json`: primer laberinto para navegación reactiva.
   El ejemplo 16 se detiene por tiempo; necesita un criterio de salida explícito
   si se quiere evaluar la resolución del laberinto.
5. `12_radar_ultrasonido_360.json`: mundo recomendado para el radar 360.

## Evidencia y misiones

Para convertir un ejemplo en una actividad evaluable:

1. Selecciona el ejemplo y el mundo sugerido.
2. Ejecuta el programa con el perfil de simulación indicado por el docente.
3. Inicia el registro desde **Diagnóstico > Trazas de simulación** antes de ejecutar.
4. Exporta la traza en JSON o CSV al finalizar.
5. Fija y revisa criterios de llegada, giro, lectura o colisión antes de calificar.
   `Documentos/MISIONES_EVALUABLES.md`, citado por la guía histórica, no está
   incluido en este paquete; no darlo por disponible ni inventar su rúbrica.

Las trazas contienen el comportamiento simulado y permiten revisar una actividad
sin depender de la interfaz usada. Antes de trasladar la solución al robot real,
consulta `Documentos/DIFERENCIAS_SIMULADOR_ROBOT.md` y recalibra sensores,
ruedas y umbrales del entorno físico.

## Trasladar una práctica del libro

Conservar el programa literal y distinguir una corrección editorial de una
adaptación de API. Las pruebas del libro se localizan por página y actividad,
no por el número de ejemplos del menú. En la campaña H-WEB1, diez cuadrados
(pp. 118–120) y espiral (pp. 120–121) terminaron en unos 80,4 y 306,3 segundos
de pared, respectivamente. No se acreditan cuadrados calibrados de 90°; la
espiral registró muestras con colisión. Se mantiene el código normalizado
editorialmente, sin cambiar su lógica para obtener una figura ideal.

El techo Web predeterminado es 120 segundos. La espiral de unos 305 segundos
requiere un techo suficiente autorizado por el responsable del entorno; no
seleccionar cero ni prometer «sin límite». El subconjunto de `random`, imagen
DECLINE y dos sonidos del libro tiene ejecución virtual comprobada; el audio
audible del navegador requiere su comprobación independiente. Un bucle infinito
se evalúa durante una ventana declarada y se detiene; no se marca como terminado.
La impresión continua sin `wait` tiene una optimización revisada con pruebas
acotadas de progreso y equivalencia raster; no garantiza ritmo bajo toda carga.
No reescribir silenciosamente el programa del alumno para obtener un resultado.

Guardar código `.py`, mundo JSON, configuración y evidencia fuera de la sesión.
El guardado privado depende del workspace del navegador y no permite entregar
una actividad al docente compartiendo sólo su URL. Antes del laboratorio,
revisar puertos, unidades, montaje y límites físicos documentados.
