● Smart Mode

Programa de Bucle Cerrado

El robot lee sus propios sensores de rueda para verificar su velocidad real. Si va demasiado lento, da más potencia a los motores. Si va demasiado rápido, retrocede. El resultado: una distancia constante y predecible cada vez.

● Raw Mode

Programa de Bucle Abierto

El robot envía un voltaje fijo a los motores y nunca verifica si se está moviendo a la velocidad correcta. La fricción, la batería baja y el retraso de arranque afectan la distancia — y nada los corrige.

⏱️
Ambos programas están bloqueados a 3000 milisegundos (3 segundos). Mantener el mismo tiempo es lo que hace que esta prueba sea justa — cualquier diferencia en la distancia es causada por el programa, no por el reloj.

Este programa usa un bloque llamado cruise control. Ese bloque activa el sistema de corrección de velocidad del robot. Pequeños sensores en cada rueda cuentan qué tan rápido gira la rueda. El controlador compara ese conteo con tu velocidad objetivo, luego ajusta la potencia del motor para cerrar la brecha — docenas de veces por segundo.

Calculadora de Velocidad — Cómo SPEED se Convierte en cm/s
targetSpeed = 20 + ((SPEED − 1) × (50 − 20)) / (20 − 1)
Tu estadística SPEED es un número del 1 al 20. Esta fórmula extiende ese rango a través de los límites de velocidad reales del robot (20–50 cm/s).
SPEED 1 → 20 cm/s  |  SPEED 6 → 27.9 cm/s  |  SPEED 20 → 50 cm/s
⚠️
El sistema de sensores tiene un piso estricto en 20 cm/s. Por debajo de esa velocidad, los sensores de rueda no pueden contar lo suficientemente rápido. El sistema de corrección pierde el rastro y el robot se detiene o se mueve de forma impredecible. Ese es un límite de hardware — no puedes solucionarlo en el código.
Valores Iniciales — Configura Estos Antes de Descargar
Cargando bloques…
let targetSpeed = 0
let minSpeed = 20
let maxSpeed = 50
let SPEED = 6
targetSpeed = minSpeed + ((SPEED - 1) * (maxSpeed - minSpeed)) / (20 - 1)
            
Estas cuatro variables se ejecutan al inicio, antes de que presiones nada.

minSpeed (20) y maxSpeed (50) son los límites físicos del sistema de corrección de velocidad — no los cambies.

SPEED (6) es tu estadística. Cambia este número (1–20) para que coincida con la estadística de Speed de tu robot antes de descargar el programa.

La última línea ejecuta la fórmula y almacena el resultado como targetSpeed, que usa el Botón B.

Botón A — Velocidad Máxima (50 cm/s)
Cargando bloques…
let maxSpeed = 50
input.onButtonPressed(Button.A, function () {
    CutebotPro.cruiseControl(maxSpeed, maxSpeed, CutebotProSpeedUnits.Cms)
    basic.pause(3000)
    CutebotPro.stopImmediately(CutebotProMotors.ALL)
})
            
Cruise control activa el sistema de corrección de velocidad y le dice que mantenga 50 cm/s en ambas ruedas.

Pause 3000 mantiene el programa esperando exactamente 3 segundos. El sistema de corrección sigue trabajando todo el tiempo — nunca descansa.

Stop immediately corta ambos motores a la vez cuando se acaban los 3 segundos.

Distancia esperada: ~143 cm

Botón B — Tu Configuración de SPEED (27.9 cm/s con SPEED 6)
Cargando bloques…
let targetSpeed = 0
input.onButtonPressed(Button.B, function () {
    CutebotPro.cruiseControl(targetSpeed, targetSpeed, CutebotProSpeedUnits.Cms)
    basic.pause(3000)
    CutebotPro.stopImmediately(CutebotProMotors.ALL)
})
            
Misma estructura que el Botón A — pero esta vez usa targetSpeed, que se calculó a partir de tu estadística SPEED cuando el programa arrancó.

Con SPEED 6, targetSpeed = 27.9 cm/s. El sistema de corrección de velocidad mantiene ese valor durante los 3 segundos completos.

Distancia esperada: ~77 cm
Button A

50 cm/s · Velocidad Máxima

El sistema de corrección de velocidad mantiene 50 cm/s durante los 3 segundos completos. La distancia es consistente ejecución tras ejecución porque el sistema corrige automáticamente la fricción y los cambios de batería.

Button B

27.9 cm/s · Tu Estadística

El sistema de corrección de velocidad rastrea tu configuración de SPEED. Funciona bien por encima de 20 cm/s. Por debajo de ese piso, los sensores de rueda no pueden leer lo suficientemente rápido y el robot se detiene.

Este programa usa un bloque llamado PWM cruise control. PWM significa Modulación por Ancho de Pulso — así es como el chip controla el voltaje a los motores. Piénsalo como un dial de volumen: 100% significa potencia total, 30% significa potencia baja. Los sensores de rueda se ignoran por completo. Cualquier física que ocurra, ocurre sin corrección.

Botón A — 100% de Potencia (Voltaje Completo)
Cargando bloques…
input.onButtonPressed(Button.A, function () {
    CutebotPro.pwmCruiseControl(100, 100)
    basic.pause(3000)
    CutebotPro.stopImmediately(CutebotProMotors.ALL)
})
            
PWM cruise control al 100 envía voltaje total de la batería a ambos motores. Sin objetivo de velocidad. Sin correcciones. El robot va tan rápido como lo permita la batería.

Esta es la ejecución de bucle abierto más rápida posible — pero ejécutala diez veces y notarás que la distancia se reduce lentamente a medida que se agota la batería. Eso es el hardware mostrando sus límites.

Distancia esperada: Máxima — disminuye al agotarse la batería

Botón B — 30% de Potencia (Voltaje Bajo)
Cargando bloques…
input.onButtonPressed(Button.B, function () {
    CutebotPro.pwmCruiseControl(30, 30)
    basic.pause(3000)
    CutebotPro.stopImmediately(CutebotProMotors.ALL)
})
            
PWM cruise control al 30 envía solo el 30% del voltaje de la batería a los motores. A este nivel bajo, los engranajes dentro del motor resisten moverse desde una parada completa — así que el robot duda un momento antes de rodar.

Ese retraso de arranque consume tu ventana de 3 segundos. Encontrarás que la distancia al 30% es más que la mitad de la distancia al 100% — la razón no escala como esperarías.

Distancia esperada: Más que la mitad de la ejecución al 100%
Button A

100% PWM · Obsérvalo Caer

Potencia total, sin correcciones. La distancia es la más alta que verás — pero no está garantizada. Ejécutalo dos veces y mide si la segunda ejecución fue más corta. Si lo es, eso es consumo de batería.

Button B

30% PWM · Retraso de Arranque

El voltaje bajo lucha contra la fricción de los engranajes al arrancar. Los motores desperdician parte de la ventana de 3 segundos solo para ponerse en movimiento. Ningún sistema de corrección puede ayudar porque este programa no usa uno.

🔋
El estado de la batería cambia tu distancia. El bucle abierto envía un porcentaje de cualquier voltaje que quede en la batería. Una batería llena al 30% y una batería a medio agotar al 30% recorrerán distancias diferentes. El programa Modo Inteligente no tiene este problema porque corrige los cambios de voltaje automáticamente.
Programa Botón Entrada ¿Qué Hace el Robot? Distancia Esperada
Modo Inteligente A 50 cm/s Los sensores de rueda verifican la velocidad constantemente y ajustan la potencia para mantener 50 cm/s. ~143 cm
Smart Mode B 27.9 cm/s Mantiene de cerca la velocidad de tu estadística SPEED. Se detiene si el objetivo cae por debajo de 20 cm/s. ~77 cm
Modo Crudo A 100% PWM Voltaje total de la batería a los motores. Sin correcciones. La distancia se reduce al agotarse la batería. Máx — disminuye por ejecución
Raw Mode B 30% PWM Voltaje bajo + fricción de engranajes = retraso de arranque. La ventana de 3 segundos comienza antes que el robot. Más que ½ de la ejecución al 100%
📐
Presta atención a la razón, no solo a los números. En Modo Inteligente, la ejecución a 50 cm/s debería ser aproximadamente 1.8× la de 27.9 cm/s. En Modo Crudo, la ejecución al 100% no será 3.3× la del 30% — el retraso de arranque rompe la razón.
⚙️
Fricción de Engranajes a Baja Potencia
El motor gira a través de un conjunto de engranajes antes de llegar a la rueda. Con PWM bajo, el voltaje no es suficientemente fuerte para poner esos engranajes en movimiento desde una parada. El robot duda — a veces durante 200–400 ms — antes de empezar a rodar. Verás esto más en el 30% de PWM.
🔋
El Consumo de Batería Cambia la Velocidad
El bucle abierto envía un porcentaje fijo del voltaje de la batería. Si la batería está baja, el 100% de una batería débil es menos potencia que el 100% de una batería llena. El Modo Inteligente no tiene este problema — los sensores de rueda detectan que el robot se ralentizó y aumentan la potencia del motor para compensar.
📡
¿Cómo Funcionan los Sensores de Rueda?
Cada rueda tiene un pequeño disco con ranuras cortadas. Un sensor óptico cuenta qué tan rápido pasan esas ranuras. Ese conteo le dice al sistema de corrección qué tan rápido está girando realmente la rueda. Por debajo de 20 cm/s, las ranuras pasan demasiado lentamente para que el sensor obtenga un conteo confiable — así que el sistema de corrección se rinde.
⚡
¿Qué Hace Realmente el PWM?
PWM (Modulación por Ancho de Pulso) enciende y apaga rápidamente el motor. 100% significa que está encendido todo el tiempo. 30% significa que está encendido el 30% del tiempo y apagado el 70%. El motor promedia eso en una velocidad más baja — pero solo si puede superar la fricción. Si no puede, esos pulsos apagados destruyen el impulso que acababan de construir los pulsos encendidos.
Prueba tu configuración de SPEED Muestra qué objetivo tendrá el Modo Inteligente cuando presiones el Botón B
Estadística SPEED 6
Configura esto para que coincida con la estadística de Speed de tu robot antes de descargar el programa Modo Inteligente.
Velocidad Objetivo
27.9
cm/s
Dist. Estimada
83.7
cm en 3 s
% del Rango de Velocidad
50%
de 20–50 cm/s
Nombre de VariableValor Inicial¿Qué Hace?
SPEED 6 Tu estadística de Speed del juego. Cámbiala a 1–20 antes de descargar. Solo importa en Modo Inteligente.
minSpeed 20 La velocidad más lenta que puede mantener el sistema de corrección. El hardware del sensor no puede rastrear de forma confiable por debajo de esto. No lo cambies.
maxSpeed 50 La velocidad más rápida que esta relación de engranajes puede mantener con corrección estable. No lo cambies.
targetSpeed calculado El resultado de la fórmula de velocidad. Se calcula una vez al inicio a partir de tu estadística SPEED. El Botón B pasa esto al cruise control.
basic.pause 3000 Cuánto tiempo (en milisegundos) el programa mantiene los motores en marcha. Bloqueado en 3000 para esta prueba — no lo cambies.
  1. 1 Descarga el programa Modo Inteligente. Configura SPEED con la estadística de Speed de tu robot antes de descargar. Pon un trozo de cinta en el suelo como línea de inicio.
  2. 2 Presiona A. Marca dónde se detiene el robot. Presiona B. Marca dónde se detiene. Anota ambas distancias.
  3. 3 Descarga el programa Modo Crudo sin cargar la batería. Misma línea de inicio. Presiona A, presiona B. Anota ambas distancias.
  4. 4 Compara las razones. En Modo Inteligente, la ejecución rápida debería ser aproximadamente 1.8× la ejecución lenta. En Modo Crudo, la ejecución al 100% no será 3.3× la del 30% — la razón se rompe debido a la fricción de los engranajes al arrancar.
  5. 5 Ejecuta el Modo Crudo 10 veces más al 100% sin recargar. Si la distancia se reduce, has medido el consumo de batería en tiempo real.
⚠️
Despeja el camino antes de cada ejecución. Ambos programas conducen recto durante 3 segundos sin evasión de obstáculos. El robot no se detendrá por una pared o un borde de mesa.