Guía 6 · Nivel 1

Carrera contra el tiempo

Construye un juego de carreras en Scratch: controla al corredor con el mouse, mantente sobre la pista y completa una vuelta en el menor tiempo posible.

Guía: 6 · Nivel 1
Ruta: Scratch
Reto: Carrera contra el tiempo
?

Pregunta guía: ¿cómo logramos que un sprite siga el mouse y corra más rápido cuanto más lejos esté el puntero?

Misión

¡Corre contra el tiempo!

Controla al corredor con el mouse, mantente sobre la pista y completa una vuelta en el menor tiempo posible. En las rectas podrás acelerar, pero tendrás que reducir la velocidad para controlar mejor las curvas.

Tu misión

Completa una vuelta a la pista en el menor tiempo posible. El mouse es tu volante y tu acelerador: aléjalo para ir más rápido y acércalo para tener control en las curvas. Si tocas el césped recibirás una penalización; si tocas la meta azul, la carrera termina.

Primera parte: preparamos la pista, el corredor y la meta.
Segunda parte: programamos el control, el cronómetro y la llegada.
Gif del funcionamiento del juego de carreras Así funciona el juego: controla al corredor con el mouse y completa la vuelta.
Misión

Prepara la pista y el corredor

Antes de comenzar a programar, organiza los elementos que necesitarás para construir el juego.

Agrega el escenario: Selecciona el fondo Racetrack Layout, donde estará la pista que recorrerá el personaje durante el juego.

Fondo Racetrack Layout de Scratch

Prepara el sprite: Añade el sprite Tatiana y cambia su tamaño a 35, para que pueda desplazarse por la pista sin tocar las zonas verdes.

Sprite Tatiana en el escenario

Crea la variable: Crea la variable tiempo, que utilizaremos como cronómetro para medir cuánto tarda el jugador en completar la pista.

Variable tiempo como cronómetro
Meta de llegada

Crea un nuevo sprite

Crea un nuevo sprite que funcionará como la meta de llegada. Este objeto indicará el punto que el corredor debe alcanzar después de completar todo el recorrido de la pista.

Para hacerlo, ve a la opción Pintar un sprite y crea un cuadrado azul. Este nuevo objeto será la meta de llegada que el corredor deberá alcanzar al finalizar el recorrido.

Pintar un sprite: cuadrado azul como meta

Luego, ajusta el tamaño del sprite para que coincida con el ancho de la pista y quede bien alineado, sin sobresalir de sus límites. Después, ubícalo en el punto dentro de la pista donde quieras establecer la llegada, asegurándote de que el corredor pueda tocarlo al completar todo el recorrido.

Ajuste de tamaño y posición de la meta
Manos al código

Prepara la programación inicial del sprite Tatiana

Al presionar la bandera verde, fijamos la variable tiempo a 0, para que el cronómetro siempre comience desde el inicio en cada partida.
Ubica el sprite: Luego, el sprite debe ir a una posición inicial en x: -159 y: 123 cada vez que comienza el juego.

Fijar variable y ubicar el sprite

Después, hacemos que el sprite apunte siempre en la misma dirección al iniciar la partida, para que comience correctamente orientado sobre la pista.
Por último, agregamos una espera de 1 segundo antes de comenzar el movimiento, dando un pequeño tiempo de preparación antes de iniciar la carrera.

Orientación y espera inicial del sprite
!

Prueba ahora: Mueve el mouse por el escenario y observa cómo el sprite gira para seguir la dirección del puntero. Por ahora, solo debe cambiar hacia dónde apunta, sin avanzar por la pista.

Manos al código

Convierte el mouse en tu volante y en tu acelerador

Siguiendo con la programación anterior, dentro del bloque por siempre, hacemos que el sprite apunte hacia el puntero del mouse. Así, el mouse funciona como un volante que indica constantemente la dirección que debe seguir el sprite mientras recorre la pista.

Luego, hacemos que el sprite avance según la distancia que existe entre él y el puntero del mouse. Para que el movimiento no sea demasiado rápido, dividimos esa distancia entre 10.

La distancia al puntero decide la velocidad: más lejos, más rápido; más cerca, mayor control.

100 ÷ 1010 pasos
⬆ Puntero lejos = rápido
50 ÷ 105 pasos
⬇ Puntero cerca = precisión y control
10 ÷ 101 paso
i

De esta manera, el mouse también funciona como un acelerador: si el puntero está lejos, el sprite avanza más rápido; si está cerca, se mueve más despacio, logrando un control más suave durante el recorrido.

El mouse como acelerador
Segunda parte

Construyendo el cronómetro

Siguiendo con la programación anterior, agregamos una condición para detectar si el sprite está tocando el pasto y se sale de la pista tocando la zona verde, cambiamos la variable tiempo en 0.5.

!

Nota: Salir de la pista genera una penalización y aumenta el tiempo total del recorrido.

Después, agregamos una espera de 0.1 segundos y hacemos que la variable tiempo cambie en 0.1. Así, mientras el sprite permanezca en movimiento, el cronómetro continúa avanzando de forma normal y registra el tiempo que tarda en completar la pista.

En la pista

tiempo +0.1

En el césped

penalización +0.5 + 0.1+0.6

Cronómetro y penalización del pasto
Última parte

¿Cómo sabe el juego que terminaste la vuelta?

Scratch no necesita identificar el nombre del rectángulo azul: el corredor puede detectar directamente su color.

Corredor toca azul
detener todos
tiempo deja de cambiar = resultado final
i

Si el corredor toca el azul desde la posición inicial, el juego terminará inmediatamente. Ajusta la meta o el corredor para que estén separados al comenzar.

por siempre
apuntar hacia [puntero del ratón] mover (distancia a [puntero del ratón] / 10) pasos si <¿tocando el color [verde]?> entonces
cambiar [tiempo] en 0.2
esperar 0.1 segundos cambiar [tiempo] en 0.1 si <¿tocando el color [azul]?> entonces
detener [todos]
Misión

Un carro controlado por Octabio

El carro se controla con un joystick: mueves la palanca y Octabio muestra en su pantalla un punto (X, Y). El eje X indica hacia donde girar (izquierda o derecha) y el eje Y indica avanzar o retroceder.

La solución

Construirás un carro controlado por Octabio: un servomotor girará la parte delantera para variar el eje X (dirigir a la izquierda o a la derecha), y dos motores traseros harán avanzar o retroceder el carro.

Qué harás

En Octabio programarás cada motor: decidirás cuándo girar y cuándo avanzar o retroceder, y lo probarás moviendo el carro sobre la mesa.

?

Reto: ¿cómo logramos que el carro gire y avance usando los tres motores al mismo tiempo?

El carro de Octabio con servomotor delantero y dos motores traseros Así es el carro de Octabio.
Nuevo concepto

Tipos de tracción: cómo giran los carros

Los carros robóticos giran de dos formas diferentes, según cómo estén colocadas y movidas sus ruedas.

Diferencial

Dos ruedas motrices, una a cada lado. Para girar, una rueda va más rápido (o en reversa) que la otra: el carro puede girar casi sin avanzar.

Ackerman

Las ruedas delanteras giran para dirigir, como un carro de verdad. Las traseras impulsan el carro hacia adelante o atrás.

i

Nuestro carro es ackerman: el servomotor delantero gira las ruedas para doblar (eje X) y los dos motores traseros lo empujan.

Diagrama de tracción ackerman: las ruedas delanteras giran para dirigir y las traseras impulsan Tracción ackerman: las ruedas delanteras dirigen.
Nuevo concepto

Sensores y actuadores

El carro funciona porque tres partes colaboran continuamente.

Sensor: recibe información del entorno. El sensor joystick entrega un punto (X, Y) cuando mueves la palanca.

Programa: decide si el carro avanza o retrocede y cuánto varía su ángulo de giro.

Actuador: un servomotor varía el giro de la parte delantera y dos motores traseros mueven las ruedas para avanzar o retroceder.

i

El sensor lee, el programa decide y el actuador actúa: mueves la palanca del joystick y el carro gira y avanza. ¡Compruébalo!

Secuencia del carro: el joystick lee la posición, el programa decide el giro y el avance, y los motores mueven el carro

Sensor

Lee el joystick (X, Y)

Programa

Decide giro y avance

Actuador

Mueve el carro

El elemento

El sensor joystick

Es como el joystick de tu consola de videojuegos: lo mueves hacia adelante, atrás, a la izquierda o a la derecha, y el carro sigue esa dirección.

Entrega dos valores: el eje X (izquierda o derecha) y el eje Y (adelante o atrás). Con esa posición, el programa decide cuánto girar y si avanzar o retroceder.

En Octabio Blocks se lee con el bloque del sensor joystick, y el punto (X, Y) se muestra en la pantalla de Octabio.

i

Es como un punto en una cuadrícula: mueves la palanca y el punto se desplaza en X o en Y.

Sensor joystick de Octabio Bloque del sensor joystick en Octabio Blocks
El elemento

El servomotor

Un servomotor permite controlar con precisión la posición angular de su eje y mantenerla estable.

Para conectarlo, usa el módulo de extensión: cable marrón a GND, rojo a +5V y naranja a P1. Luego conecta el módulo a Octabio con un cable Grove.

Los bloques de la categoría Motor permiten elegir el puerto, el ángulo, el tiempo y la forma del movimiento.

Dos posiciones para girar

= ruedas rectas: el carro va derecho. 90° = ruedas giradas: el carro dobla. Es como la bicicleta: el manubrio recto te lleva derecho, y lo giras para doblar. Si tu carro dobla al revés, intercambia estos ángulos después de probar.

Servomotor de Octabio Bloques de la categoría Motor para controlar el servomotor
Nuevo concepto

¿Cómo controla el servomotor la tapa de la caneca?

El servomotor se mueve hasta posiciones específicas indicando un ángulo, con un recorrido de a 180°, como se muestra en la imagen.

: posición inicial del brazo. 90°: gira un cuarto de vuelta y levanta la tapa. 180°: posición más alejada del recorrido.

En nuestro proyecto usaremos principalmente y 90°: al detectar un objeto, el servomotor va a 90° y abre la tapa; después de unos segundos regresa a y la cierra.

i

Idea clave: el ángulo programado determina cuánto se mueve la tapa de la caneca.

Recorrido del servomotor de 0° a 180°: posiciones inicial, de apertura de la tapa y máxima
Vamos a construir

Construyamos el carro de Octabio

Ya aprendiste lo necesario. Ahora vas a construir tu carro controlado por Octabio en 4 pasos.

1 · Estructura: arma el carro y ubica el servomotor delantero (dirección) y los dos motores traseros.
2 · Conexión: conecta el servomotor, los motores traseros y el sensor joystick a Octabio.
3 · Programación: programa el movimiento: el joystick decide el giro y el avance.
4 · Pruebas: prueba el carro sobre la mesa y ajusta los ángulos de giro.
Carro construido con Octabio, con servomotor delantero y motores traseros
Construcción

1. Construye el carro paso a paso

Instrucciones
Conexión

2. Conexión de componentes electrónicos

Conecta primero el sensor joystick al puerto A de Octabio con un cable Grove de 4 pines. Luego, el servomotor se conecta a 3 pines del módulo de extensión, y este módulo se conecta al puerto B de Octabio con un cable Grove de 4 pines. Por último, conecta los dos motoreductores a los puertos M1 y M2 con cables Grove de 2 pines.

Tanto sensores como actuadores se conectan con cables Grove de 4 pines: alinea las guías del conector con las ranuras del módulo y de Octabio, y presiona suavemente cada extremo hasta que quede asegurado, como se muestra en las imágenes.

Conexión del cable Grove a Octabio Conexión del cable Grove al módulo

Verifica las conexiones: sensor joystick → puerto A, servomotor → módulo de extensión → puerto B y motoreductores → M1 y M2.

Conexiones del carro: servomotor al módulo de extensión, sensor joystick al puerto A y motoreductores a M1 y M2

Cable del servomotor

Marrón: tierra (GND) · Rojo: +5V · Naranja: señal (P1).

Preparación

La posición de los engranajes

Antes de probar el programa, revisa la posición inicial de los engranajes.

Durante el montaje, al programar y al ejecutar, el engranaje de abajo permanece desalineado: así compruebas el buen funcionamiento observando la rotación de los engranajes.

Cuando los dos engranajes ya estén girando en direcciones contrarias con respecto al sentido de giro, ya puedes alinearlos y poner el carro en marcha. Antes no: podrías forzar la posición inicial y dañar el servomotor.

i

Idea clave: el movimiento óptimo de los engranajes determina el ángulo de giro correcto de las ruedas delanteras (eje X): si van desalineados, el carro no dobla bien.

A la izquierda, engranajes desalineados; a la derecha, engranajes alineados listos para ejecutar el código

Antes de comprobar la programación: engranajes desalineados.

Al ejecutar el código en Octabio: engranajes alineados.

Funcionamiento

¿Cómo se abre y se cierra la caneca?

El movimiento de la tapa depende de la rotación del engranaje pequeño:

Giro hacia la derecha, en dirección al sensor: la tapa se abre hasta 90°. Giro hacia la izquierda: la tapa regresa y se cierra.

El servomotor transmite el movimiento a los engranajes: la tapa cambia de posición según la instrucción de Octabio.

Advertencias

1 · Engranajes desalineados: verifica el movimiento del servomotor y evita forzar el mecanismo.
2 · Ruido extraño: apaga y desconecta a Octabio y vuelve a revisar las instrucciones anteriores antes de reactivar el mecanismo.
Sistema de engranajes de la caneca: el giro hacia la derecha abre la tapa y hacia la izquierda la cierra
Programación

3. Programación del robot

Programa a Octabio para que revise continuamente si hay un obstáculo cerca de la caneca.

Dentro de un bloque por siempre, lee el sensor de obstáculos conectado al puerto C: el valor lógico que lea (1 ó 0) se mostrará en el centro de la pantalla. Si el sensor detecta un objeto y su valor es igual a 1, activa el servomotor conectado al puerto B para mover la tapa hasta un ángulo de 90° durante 1 segundo.

Después, espera durante 3 segundos para permitir que la persona deposite el residuo. Al finalizar ese tiempo, mueve nuevamente el servomotor hasta en 0,5 segundos, para que la tapa vuelva a cerrarse.

Antes de iniciar el ciclo, Octabio limpia la pantalla y luego repite este proceso de detección, apertura, espera y cierre de manera continua.

La caneca inteligente abre la tapa al detectar una mano
Director de pruebas

4. Prueba y ajusta hasta que funcione

  • Pon la mano o algún objeto frente al sensor y observa el valor binario en pantalla (1 ó 0).
  • Verifica que la tapa abra justo cuando la mano está cerca del sensor.
  • Retira la mano y confirma que la tapa se cierra sola.
Caneca inteligente abriendo su tapa

¿La tapa no se mueve?

Puede ser una conexión floja en el módulo de extensión o que el programa controle un puerto distinto al que usaste.

Solución: revisa la conexión del servo y verifica el puerto; vuelve a subir el código.

¿El sensor no lee?

El sensor de obstáculos debe estar conectado al puerto C; puede estar mal conectado o estar leyendo el puerto incorrecto.

Solución: verifica el puerto y observa los valores en pantalla; ajusta el umbral si hace falta.

¿La tapa se mueve al revés?

Los ángulos están invertidos dentro del si / si no: la tapa abre cuando debe cerrar.

Solución: intercambia los ángulos de abrir y cerrar en los bloques del servo.

MiniTest

Comprueba lo que aprendiste

Son 5 preguntas sobre la caneca inteligente. Elige tu respuesta y comprueba.

Reporte

Tu juego ya cuenta, recuerda y decide solo

Hoy aprendiste a usar variables para guardar información, clones para crear muchos objetos y condicionales para tomar decisiones en tiempo real.

La idea que conecta todo

Ocurre algo → la variable guarda el valor → el programa compara → el juego responde.

VariableClonContadorTemporizadorCondicional

Reflexiona

¿Qué pasaría si el juego permitiera guardar el puntaje de varios jugadores a la vez? ¿Cómo lo harías con una lista?

Para el equipo: comenten qué fue lo más difícil del juego de los globos y cómo lo solucionaron.