Ejecutarás dos programas — uno donde el robot monitorea su propia velocidad, y otro donde no lo hace. Ambos conducen durante exactamente 3 segundos. Compara las distancias para ver qué puede y qué no puede controlar el hardware.
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.
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.
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.
let targetSpeed = 0
let minSpeed = 20
let maxSpeed = 50
let SPEED = 6
targetSpeed = minSpeed + ((SPEED - 1) * (maxSpeed - minSpeed)) / (20 - 1)
targetSpeed, que usa el Botón B.
let maxSpeed = 50
input.onButtonPressed(Button.A, function () {
CutebotPro.cruiseControl(maxSpeed, maxSpeed, CutebotProSpeedUnits.Cms)
basic.pause(3000)
CutebotPro.stopImmediately(CutebotProMotors.ALL)
})
let targetSpeed = 0
input.onButtonPressed(Button.B, function () {
CutebotPro.cruiseControl(targetSpeed, targetSpeed, CutebotProSpeedUnits.Cms)
basic.pause(3000)
CutebotPro.stopImmediately(CutebotProMotors.ALL)
})
targetSpeed, que se calculó a partir de tu estadística SPEED cuando el programa arrancó.targetSpeed = 27.9 cm/s. El sistema de corrección de velocidad mantiene ese valor durante los 3 segundos completos.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.
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.
input.onButtonPressed(Button.A, function () {
CutebotPro.pwmCruiseControl(100, 100)
basic.pause(3000)
CutebotPro.stopImmediately(CutebotProMotors.ALL)
})
input.onButtonPressed(Button.B, function () {
CutebotPro.pwmCruiseControl(30, 30)
basic.pause(3000)
CutebotPro.stopImmediately(CutebotProMotors.ALL)
})
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.
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.