.. _ir_obstacle:
Lección 6 Obstáculo IR
===========================
Conoce los "ojos" laterales de tu rover: ¡los sensores de evitación de obstáculos por infrarrojos!
Estos inteligentes sensores ayudan a tu GalaxyRVR a detectar y esquivar obstáculos a los lados, como si tuviera visión periférica. Aprende cómo funcionan y programa tu rover para navegar alrededor de objetos de forma automática.
Prepárate para convertir tu Mars Rover en un experto evadiendo obstáculos.
.. raw:: html
Objetivos de Aprendizaje
-------------------------
* Comprender los principios de funcionamiento del módulo de evitación de obstáculos por infrarrojos y su aplicación en el Mars rover.
* Aprender a leer y aplicar los datos del módulo de evitación de obstáculos por infrarrojos en Scratch.
* Crear un juego de evitación de obstáculos con temática de exploración marciana utilizando el módulo IR y el escenario de Scratch.
Conoce el Módulo de Evitación de Obstáculos
----------------------------------------------
Saluda al nuevo compañero de tu GalaxyRVR: el módulo de evitación de obstáculos por infrarrojos. Este pequeño y astuto dispositivo ayuda a tu rover a detectar y evitar obstáculos. Veamos cómo funciona:
.. image:: img/ir_avoid.png
:width: 300
:align: center
**Conoce los Cuatro Pines Importantes:**
* **GND** —La conexión a tierra (completa el circuito)
* **+** —Entrada de alimentación (necesita electricidad de 3.3V a 5V)
* **Out** —Salida de señal (envía mensajes de "obstáculo detectado")
* **EN** —Pin de habilitación (controla cuándo el módulo está activo)
**Cómo Funciona —La Linterna Invisible:**
Piensa en este módulo como si tuviera una linterna invisible y gafas especiales:
.. image:: img/ir_receive.png
:align: center
1. El transmisor emite luz infrarroja (invisible a nuestros ojos)
2. Cuando la luz golpea un obstáculo, rebota
3. El receptor "ve" la luz reflejada
4. El módulo envía una señal: "¡Obstáculo adelante!"
**Datos Curiosos Sobre tu Sensor:**
* **Rango de Detección**: 2-40 cm (aproximadamente el largo de tu estuche de lápices)
* **El Color Importa**: Funciona mejor con objetos de color claro
* **Objetos Oscuros**: Más difíciles de detectar desde lejos
**Controles Avanzados (Para Mentes Curiosas):**
* **Pin EN**: El puente (jumper) mantiene el módulo siempre activo. Retíralo si quieres controlar el módulo con código.
.. image:: img/ir_cap.png
:width: 400
:align: center
* **Dos Ajustes**:
- Un potenciómetro controla qué tan lejos viaja la luz infrarroja
- Un potenciómetro ajusta la frecuencia de la luz
.. image:: img/ir_avoid_pot.png
:width: 400
:align: center
Ahora que conoces a tu nuevo compañero, conectémoslo a tu rover y comencemos a programar.
Probando tus Sensores Infrarrojos
------------------------------------------------------------
#. Primero, :ref:`app_connect`.
2. ¡Ajustemos tus sensores para un rendimiento perfecto!
a. Asegúrate de que los componentes infrarrojos estén rectos. Ajusta suavemente si es necesario.
.. raw:: html
b. Coloca un objeto (como la caja de tu rover) a 20 cm. Gira el potenciómetro hasta que la luz indicadora se encienda. Prueba moviendo el objeto más cerca y más lejos.
.. raw:: html
c. Haz lo mismo con el otro módulo infrarrojo.
3. Luego, :ref:`app_connect`.
4. Busca los bloques "left IR status" y "right IR status" en la categoría GalaxyRVR y marca sus casillas.
.. image:: img/4_ir_statusblock.png
5. Los valores de los sensores aparecerán ahora en tu escenario.
.. image:: img/4_ir_statusvalue.png
6. Mueve tu mano cerca de cada sensor infrarrojo y observa cómo cambian los valores.
**Qué Significan los Valores:**
- **True** = Obstáculo detectado
- **False** = Camino despejado
¡Ahora estás listo para ver lo que tu rover puede "ver"!
Programando tu Rover para Evitar Obstáculos
-------------------------------------------------------------
Enseñémosle a tu GalaxyRVR a esquivar obstáculos automáticamente usando sus sensores infrarrojos.
#. Primero, :ref:`app_connect`.
#. Inicia el programa con un bloque de bandera verde.
.. image:: img/4_ir_start.png
#. Establece una velocidad segura del 30% para facilitar las pruebas y la depuración.
.. image:: img/4_ir_speed.png
#. Encuentra el bloque ``when left IR is blocked`` para la detección del sensor izquierdo.
.. image:: img/4_ir_when_blocked.png
#. Cuando el sensor izquierdo detecte un obstáculo, haz que el rover gire a la derecha.
.. image:: img/4_ir_turn_right.png
#. Sigue girando a la derecha hasta que el lado izquierdo ya no detecte el obstáculo.
.. image:: img/4_ir_wait_until.png
#. Detén el movimiento una vez que el camino esté despejado.
.. image:: img/4_ir_stop.png
#. Prueba activando el sensor infrarrojo izquierdo con tu mano. El GalaxyRVR debería girar inteligentemente a la derecha para evitarlo.
#. Duplica el código manteniendo presionados los bloques y seleccionando duplicar en el menú.
.. image:: img/4_ir_duplicate.png
#. En el código duplicado, intercambia los lados izquierdo y derecho para que maneje los obstáculos del lado derecho.
.. image:: img/4_ir_left_right.png
#. Para evitar un comportamiento errático cuando ambos sensores se activan a la vez, agrega un bloque "stop other scripts in sprite". Esto asegura que solo se maneje un evento de sensor a la vez.
.. image:: img/4_ir_stop_script.png
:width: 800
.. note:: El bloque de detener scripts puede entrar en conflicto con los bloques de movimiento temporizado, así que evita usarlos juntos cuando sea posible.
#. Ahora tu GalaxyRVR girará a la izquierda o a la derecha cuando se detecten obstáculos en cualquier lado. Prueba activando ambos sensores con tus manos.
#. Agrega un bloque de avance debajo de cada sección de código para que el rover continúe moviéndose después de evitar los obstáculos.
.. image:: img/4_ir_avoid_move.png
:width: 800
¡Ahora haz clic en la bandera verde! Tu GalaxyRVR se moverá hacia adelante continuamente, esquivando inteligentemente los obstáculos y reanudando su camino después de evitarlos.
Bloques Relacionados con el Módulo IR
----------------------------------------
* Bloque de evento que se activa cuando el sensor IR izquierdo detecta un obstáculo.
- Cambia "left" por "right" en el menú desplegable.
.. image:: img/block/ir_when.png
* Pausa el programa hasta que el sensor IR izquierdo ya no detecte un obstáculo.
- Cambia "left" por "right" para el otro sensor.
- Cambia "is not" por "is" para la condición opuesta.
.. image:: img/block/ir_wait_until.png
* Bloque condicional que devuelve VERDADERO si el sensor IR izquierdo detecta un obstáculo.
- Perfecto para usar con declaraciones ``if``.
- Cambia "left" por "right" para el otro sensor.
.. image:: img/block/ir_condition.png
* Muestra el estado de detección actual del sensor IR izquierdo.
.. image:: img/block/ir_left_value.png
* Muestra el estado de detección actual del sensor IR derecho.
.. image:: img/block/ir_right_value.png