Esquivar obstáculos con el sensor ultrasónico
Recorrido del nivel
Esa barra de arriba te dice en qué paso estás. Tocala para ver el índice completo y saltar a cualquier paso.
Optimizar el robot para esquivar objetos
Para este nivel construimos otro modelo de robot, mejor preparado para maniobrar y esquivar. Las instrucciones para armarlo se descargan en línea (por ejemplo, en static.robobloq.cn/wiki/03.pdf).
Conectar el sensor ultrasónico al puerto 6
Para que el robot pueda esquivar obstáculos, le conectamos el sensor ultrasónicoSensor de distancia ultrasónicoSensor que mide distancias emitiendo un pulso de sonido ultrasónico y midiendo el tiempo hasta que el eco regresa tras rebotar en un obstáculo. Tiene cuatro pines: VCC y GND para la alimentación, Trigger para disparar el pulso y Echo para detectar su llegada. al puerto número 6 de la placa.
El sensor ultrasónico mide distancias: emite un pulso de sonido de alta frecuencia y mide el tiempo que tarda en volver tras rebotar en un obstáculo. Ese tiempo es proporcional a la distancia al objeto, así que el robot puede “saber” qué tan cerca tiene algo adelante.
También vamos a usar el zumbadorBuzzer (zumbador)Dispositivo que genera sonido a una frecuencia determinada. Al recibir alimentación comienza a sonar; controlándola se pueden generar sonidos continuos o pulsos. Sirve como mecanismo de señalización o aviso., que ya viene integrado a la placa y sonará cuando el sensor detecte un obstáculo. Como todo en este kit, ninguno de los dos requiere cablear: el sensor se enchufa a su puerto y el zumbador ya está en la controladora.
Detectar la distancia y frenar ante un obstáculo
El robot debe esquivar los objetos cuando estén a una distancia que definimos nosotros. El bloque que entrega la distancia medida está en la categoría Sensor, y para comparar usamos el bloque «mayor que» de la categoría Operadores.
La regla es: avanzar solo si la distancia medida es mayor a 40 cm; en caso contrario, frenar. Como ahora el robot tiene que reaccionar a lo que mide, conviene una velocidad moderada: usamos 50 (no la máxima), para que le dé tiempo a detectar y maniobrar.
- Por siempre
- Si «distancia del sensor (puerto 6) > 40 cm» entonces
- Avanzar a velocidad 50
- Si no
- Detener el movimiento del motor a bordo
Elegir una dirección al azar
Cuando el robot detecta un objeto, lo hacemos girar aleatoriamente a la izquierda o a la derecha, para que no quede trabado y busque una salida distinta cada vez. Usamos el bloque «Número aleatorio entre» (categoría Operadores).
Como el bloque elige entre números y no entre direcciones, le asignamos un valor a cada una: el 1 hará que gire a la izquierda y el 2, a la derecha. Después de cada giro, agregamos una espera breve (por ejemplo, 0,3 segundos) para darle tiempo a completar el giro antes de seguir.
- Si no (hay obstáculo): detener el movimiento
- Guardar en una variable un número aleatorio entre 1 y 2
- Si el número es 1 → girar a la izquierda
- Si el número es 2 → girar a la derecha
- Esperar 0,3 segundos (dar tiempo al giro)
Simulación del comportamiento
Una máquina de estados en TypeScript reproduce el comportamiento que programás por bloques en el kit. No ejecuta el software del kit: es una representación fiel de lo que hará el dispositivo real.
Simulación lista. Presioná «Iniciar» para arrancar la secuencia.
Programar el zumbador de aviso
Por último, hacemos que el robot avise con un sonido cada vez que detecta un obstáculo. Para que suene el zumbador usamos el bloque «Jugar Tono», que permite elegir la nota musical MIDI y su duración.
Las duraciones posibles se expresan en fracciones de “tiro” (equivalente a un segundo): la mitad (0,5 s), un cuarto (0,25 s), un octavo (0,125 s), un tiro entero (1 s) o doble tiro (2 s). El sonido se ejecuta luego de que el robot frena, junto con la maniobra de esquive.
- Por siempre
- Si «distancia (puerto 6) > 40 cm»: avanzar a velocidad 50
- Si no: detener el movimiento del motor a bordo
- Jugar Tono: reproducir una nota MIDI de aviso
- Número aleatorio entre 1 y 2 → girar a la izquierda o a la derecha
- Esperar 0,3 segundos (dar tiempo al giro)
Verificá
Poné al robot a andar y acercale un obstáculo (una caja, una carpeta) por delante. Al llegar a unos 40 cm, tiene que frenar, sonar el zumbador y girar hacia un lado (que va cambiando entre intentos). Después sigue avanzando hasta encontrar el próximo obstáculo. Si choca antes de frenar, subí el umbral de distancia o bajá la velocidad. Si el giro se queda corto, aumentá la espera de 0,3 segundos.
Desafío
Sumale al esquive una melodía en lugar de un solo tono, encadenando varios bloques «Jugar Tono», o hacé que los LED RGB cambien de color al detectar un obstáculo (por ejemplo, a rojo mientras esquiva). Como cierre del proyecto, podés descargar la app de Robobloq y controlar el robot por Bluetooth con un joystick.
Cierre del proyecto
Con este nivel completaste el recorrido del proyecto: armaste el robot, lo programaste para seguir un camino pautado, le enseñaste a llevar y mostrar un mensaje y, finalmente, lo hiciste autónomo, capaz de detectar y esquivar obstáculos por sí solo con el sensor ultrasónico y el zumbador. En el camino trabajaste nociones de mecánica (el ensamble), de movimiento (la relación entre velocidad y tiempo) y de programación por bloques (secuencias, condiciones, bucles, azar y lectura de sensores). Si querés seguir, podés sumarle un sensor seguidor de líneas, programarle melodías o controlarlo por Bluetooth desde la app de Robobloq.
Evidencia de cierre
Al terminar este nivel, esto tiene que estar funcionando:
- El robot está reconfigurado según el segundo modelo del kit y tiene el sensor ultrasónico conectado al puerto 6.
- El robot avanza a velocidad moderada (50) mientras el sensor mide más de 40 cm de distancia libre, y frena cuando detecta un obstáculo más cerca.
- Al detectar un obstáculo, el robot elige al azar girar a la izquierda o a la derecha (con el bloque de número aleatorio) y espera un instante para completar el giro antes de seguir.
- El zumbador integrado emite un tono de aviso cada vez que el robot detecta un obstáculo y frena.