Button A

Ejecutar la prueba

Muestra la estadística SPEED y la barra de potencia, luego conduce recto durante 2 segundos y se detiene.

Button B

Ciclar SPEED

Avanza SPEED de 1 → 2 → … → 20 → de vuelta a 1 sin volver a programar. Muestra el nuevo valor en el LED.

A + B

Parada de emergencia

Corta ambos motores de inmediato durante una ejecución. Muestra X en el LED y limpia después de 500 ms.

💡
Mostrar SPEED
Desplaza el valor de SPEED en el LED — 800 ms
→
⚡
Barra de potencia
La barra muestra el % del motor — 800 ms
→
⏸️
Pausa
Pantalla se borra — 500 ms
→
🤖
Conducir
Ambos motores a currentPower durante 2 000 ms
→
✋
Detener
Ambos motores cortados de inmediato
→
🏁
Listo
Patrón X 500 ms y luego borra
ℹ️
La fase de vista previa (desplazamiento SPEED + barra de potencia) tarda aproximadamente 2.1 segundos antes de que el robot se mueva. El temporizador de conducción de 2 segundos comienza en el momento en que las ruedas empiezan a girar.
8
Número desplazándose
Estadística SPEED actual — mostrada durante 800 ms antes de cada ejecución, y al ciclar con el Botón B
Barra de progreso
La altura muestra la potencia del motor (0–100%). Más alta = más potencia. Mostrada durante 800 ms después del número SPEED
Patrón X
Ejecución completa o parada de emergencia activada. Mostrado durante 500 ms y luego borra
Potencia del Motor
currentPower = (SPEED × 100) / 20 (%)
Ambos motores izquierdo y derecho reciben el mismo valor, por lo que el robot conduce recto.
Valores Iniciales
Cargando bloques…
let testStart = 0
let running = false
let currentPower = 0
let SPEED = 1
let TEST_DURATION_MS = 2000
            
Configura TEST_DURATION_MS en 2000 y SPEED en 1 antes de descargar. Todo lo demás comienza en 0 y se calcula cuando presionas A.
Button A — Ejecutar la prueba
Cargando bloques…
let currentPower = 0
let SPEED = 0
let running = false
let testStart = 0
let TEST_DURATION_MS = 0
input.onButtonPressed(Button.A, function () {
    currentPower = SPEED * 100 / 20
    basic.showString("" + (SPEED))
    basic.pause(800)
    led.plotBarGraph(
    currentPower,
    100
    )
    basic.pause(800)
    basic.clearScreen()
    basic.pause(500)
    running = true
    testStart = input.runningTime()
    CutebotPro.pwmCruiseControl(currentPower, currentPower)
    while (running && input.runningTime() - testStart < TEST_DURATION_MS) {
        CutebotPro.pwmCruiseControl(currentPower, currentPower)
    }
    CutebotPro.stopImmediately(CutebotProMotors.ALL)
    running = false
    basic.showLeds(`
        # . . . #
        . # . # .
        . . # . .
        . # . # .
        # . . . #
        `)
    basic.pause(500)
    basic.clearScreen()
})
            
Calcula currentPower a partir de tu estadística SPEED, muestra el número y luego la barra de potencia, luego conduce recto durante TEST_DURATION_MS milisegundos. El bucle while sigue verificando el tiempo transcurrido para que una pulsación A+B pueda salir antes. El patrón X en el LED confirma que la ejecución terminó.
Button B — Ciclar SPEED
Cargando bloques…
let SPEED = 0
input.onButtonPressed(Button.B, function () {
    if (SPEED >= 20) {
        SPEED = 1
    } else {
        SPEED += 1
    }
    basic.showString("" + (SPEED))
    basic.clearScreen()
})
            
Aumenta SPEED en 1 con cada pulsación — vuelve a 1 después de 20. El número desplazándose te permite confirmar el valor antes de presionar A. No es necesario volver a programar.
Button A+B — Parada de Emergencia
Cargando bloques…
let running = false
input.onButtonPressed(Button.AB, function () {
    running = false
    CutebotPro.stopImmediately(CutebotProMotors.ALL)
    basic.showLeds(`
        # . . . #
        . # . # .
        . . # . .
        . # . # .
        # . . . #
        `)
    basic.pause(500)
    basic.clearScreen()
})
            
Establece running = false para que el bucle del Botón A salga en su próxima verificación, luego corta ambos motores de inmediato. Úsalo si el robot se dirige a un lugar donde no debería.
Prueba un valor de SPEED Refleja lo que el robot calcula al presionar el Botón A
SPEED 10
Presiona B en el micro:bit v2 para ciclar este mismo rango en vivo sin volver a programar
Potencia del Motor
50%
ambos motores
Duración de Conducción
2.0
segundos
Tiempo de Vista Previa
~2.1
seg (desplazamiento + barra)
Potencia del motor — 50%
0% 25% 50% 75% 100%

El Botón B cambia SPEED en memoria sin tocar el programa grabado. Cada pulsación agrega 1 a SPEED. Cuando SPEED llega a 20, la siguiente pulsación lo devuelve a 1.

1 → 2 → · · · → 20 → 1 → · · ·
ℹ️
El nuevo SPEED solo surte efecto la próxima vez que presiones A. Presionar B a mitad de una ejecución cambia el valor en memoria pero no afecta la conducción actual — currentPower ya fue calculado cuando presionaste A.
NombreValorPropósito
SPEED 1 Estadística de velocidad inicial — configura en 1 en el código antes de descargar, luego cicla con el Botón B
TEST_DURATION_MS 2000 Cuánto tiempo conduce el robot en cada pulsación de A (milisegundos). Configura esto en 2000 en el código antes de descargar
currentPower calculado (SPEED × 100)/20 — el valor PWM real enviado a ambos motores
running false Bandera que la parada de emergencia A+B establece en false, causando que el bucle de conducción salga
testStart computed Marca de tiempo (ms) cuando comienza el bucle de conducción — usada para medir el tiempo transcurrido
  1. 1 Configura TEST_DURATION_MS en 2000 y SPEED en 1 en el código. Luego descarga el programa.
  2. 2 Configura un SPEED con el Botón B. Cada pulsación agrega 1. El número desplazándose confirma el valor actual. Deténte cuando llegues a la estadística que quieres probar.
  3. 3 Coloca el robot en una trayectoria recta y despejada. Conduce durante 2 segundos y luego se detiene. Marca dónde comienza y dónde termina.
  4. 4 Presiona A para ejecutar. Observa la vista previa (número → barra), luego conduce. Presiona A+B en cualquier momento para detener antes.
  5. 5 Compara velocidades. Presiona B para subir SPEED, reposiciona el robot en la misma línea de inicio, presiona A de nuevo. Compara cuánto recorre.
⚠️
El robot no tiene sensores activos durante esta prueba. Conduce a ciegas durante 2 segundos. Asegúrate de que la trayectoria esté despejada — se saldrá de una mesa o chocará contra una pared sin detenerse.