← Índice Valentina Tech
Misión 5 · Bitácora de Misiones · Astra-7

El mando de inclinación de la Astra-7

Algo golpeó a la nave: la Astra-7 tembló entera ahí en el fondo del océano de K-342, y el
casco quedó dañado. En la computadora tienes la consola de daños: una pantalla con
el modelo 3D de la nave que se puede girar para revisarla por todos lados… pero el
impacto dejó los mandos bloqueados.

Aquí entra tu placa. Vas a convertir tu Circuit Playground en el mando de la nave: lo
inclinas y el modelo 3D gira en la pantalla. ¿El truco? Programarás el CPX para que
se haga pasar por un teclado y "teclee" las flechas él solito según cómo lo muevas.

🎯 Tu misión

Programar el CPX para que, al inclinarlo, envíe las flechas del teclado (← → ↑ ↓) y
así gire el modelo 3D de la nave para inspeccionar los daños.

🎮 Esto es de verdad: los controles de videojuegos, los volantes de carreras y los
mandos que ayudan a personas con discapacidad son placas como la tuya que fingen ser un
teclado o un ratón
. A esto se le llama HID (dispositivo de interfaz humana). Hoy tu
CPX se une al club.

📦 Antes de empezar (una sola vez): para que el CPX pueda "teclear", necesita la carpeta
adafruit_hid dentro de lib/ en tu CIRCUITPY. Tu instructor/a seguramente ya la
copió; si no, se saca del bundle de CircuitPython. Sin esa carpeta, el programa marcará
error al arrancar.


🧠 La idea (usa lo del Lab 5)

Esto es puro acelerómetro, el sensor del Lab 5:

La traducción es directa:

inclina a la DERECHA    →  flecha DERECHA   (la nave gira)
inclina a la IZQUIERDA  →  flecha IZQUIERDA (la nave gira)
inclina al FRENTE       →  flecha ARRIBA    (levanta el morro)
inclina hacia TI        →  flecha ABAJO     (baja el morro)

💻 El programa completo

Es cortito y sin funciones. Cópialo tal cual; abajo lo explicamos.

import time
from adafruit_circuitplayground import cp
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode

teclado = Keyboard(usb_hid.devices)

UMBRAL = 3        # cuánto hay que inclinar (más alto = menos sensible)
tecla = None      # flecha que está apretada ahora

while True:
    x, y, z = cp.acceleration

    nueva = None
    if x > UMBRAL:
        nueva = Keycode.RIGHT_ARROW
    elif x < -UMBRAL:
        nueva = Keycode.LEFT_ARROW
    elif y > UMBRAL:
        nueva = Keycode.DOWN_ARROW
    elif y < -UMBRAL:
        nueva = Keycode.UP_ARROW

    if nueva != tecla:            # solo si cambió
        teclado.release_all()
        if nueva is not None:
            teclado.press(nueva)
        tecla = nueva

    time.sleep(0.05)

Cómo lo lee el programa:


🎮 Pruébalo con la nave (paso a paso)

  1. Carga tu programa en el CPX: guárdalo como code.py en el CIRCUITPY.
  2. En la computadora, abre la consola de daños: doble clic en nave.bat (o
    python nave.py). Verás la nave en 3D.
  3. Haz clic en la ventana de la nave para que reciba las teclas.
  4. Deja el CPX plano sobre la mesa (su reposo) y luego inclínalo despacio: la nave
    debe girar hacia el lado que lo ladeas.
  5. ¿Una flecha sale al revés? Cambia RIGHT_ARROW por LEFT_ARROW (o UP por DOWN)
    en esa línea.
  6. Inspecciona: gira la nave por todos lados y busca las zonas dañadas (manchas de
    rojo oscuro sobre el casco). Márcalas en tu hoja de "Reporte de Daños" conforme las
    vayas encontrando. ¿Cuántas descubres?

⚠️ ¿La nave gira sola? Seguramente el CPX no estaba plano al arrancar (o la mesa
está inclinada). Ponlo bien plano y vuelve a intentar.


🎚️ Ajusta la sensibilidad

La sensibilidad la decides tú con UMBRAL:


🌟 Si quieres ir más allá (reto opcional)


✅ Misión cumplida cuando…

🏅 Insignia: "Piloto de inclinación".

Valentina Tech · Circuit Playground Express · CircuitPython