YOSHIMITSU · Referencia de API

El Shinobi Hermético como biblioteca: un sketch relajado, dos objetivos, seis posturas y la consola protegida por 極光 que administra el trono.

Arquitectura

YOSHIMITSU es una biblioteca con un sketch fino encima. Todo el núcleo vive en src/Yoshimitsu.h; cada valor por defecto vive en src/Yoshimitsu_Loadout.h como _DEFAULT (pines, tiempos, niveles de compuertas). El sketch — yoshimitsu.ino o la copia examples/Yoshimitsu_Default/ — solo guarda tu* configuración y las sustituciones que definas antes del include. Actualiza la biblioteca sin volver a tocar tu sketch.

La detección de objetivo es automática: ARDUINO_ARCH_RP2040 elige la vía RP2040-Tiny (Servo.h, cambio de postura por toques de RESET), ARDUINO_ARCH_ESP32/ARDUINO_ARCH_ESP32S3 elige la vía ESP32-S3 (ESP32Servo.h, USB nativo). Cualquier otra cosa falla en compilación con un #error claro.

graph TB
  SKETCH["yoshimitsu.ino
the relaxed sketch — config only"] LOADOUT["Yoshimitsu_Loadout.h
the starting loadout · *_DEFAULT"] CORE["src/Yoshimitsu.h
the whole core"] STANCES["six stances
KINCHO · MANJI · FLEA
MEDITATION · NSS · BACK"] CONSOLE["USB-serial console
極光-gated admin"] CRSF["CRSF RX"] BRIDGE["MUSHIN bridge
無心 no-mind protocol"] PWM["servo PWM
wing L/R · crest"] SKETCH --> CORE LOADOUT --> CORE CRSF --> CORE BRIDGE --> CORE CONSOLE --> CORE CORE --> STANCES STANCES --> PWM

Las Seis Posturas

Cada postura es un valor del enum Stance (0–5) elegido en tiempo de ejecución — por comando USB, el botón GPIO0 (ESP32-S3) o toques de RESET (RP2040-Tiny).

Postura Función
KINCHO

La parada — conversor CRSF→PWM; los canales de radio se vuelven microsegundos de servo.

MANJI_DRAGONFLY

La levitación — conversor más el PID del giroscopio Zephyrus local en la cresta.

FLEA

El impulso — plantilla de ciclo de energía que lleva el receptor al bootloader y luego a MEDITATION.

MEDITATION

La esponja — flasher de bolsillo; el USB↔UART es un puente transparente puro para esptool.

NSS

El banco sin espada — accionamiento directo del servo (SERVO i us), sin radio.

BACK_TURNED

El espejo — reposo engañoso; el eco UART nunca mira atrás.

Compuertas de Compilación

Todo lo opcional se elimina limpiamente al desactivarlo — sin bytes muertos, sin referencias colgantes. Sustituye cualquiera de estos en tu sketch antes del include.

API de la Consola

Los comandos de postura quedan abiertos: KINCHO, MANJI, FLEA, MEDITATION, NSS, BACK, POSE n, más STATUS, SERVO i us y HELP. Los comandos de administrador están protegidos tras el prompt: escribe primero 極光 y luego DOC, SETUP, JIGUANG, MUTE, CRSF, SCORE, ELRS, LEGEND, BRIDGE, ADMIN o MUSHIN.

極光 DOC imprime el catálogo de trucos; 極光 SETUP imprime el asistente de meditación (postura, nivel de voz, estado MUSHIN, energía del receptor). Una línea sin prompt que toque un comando protegido responde "el trono está custodiado" y regresa.

MUSHIN 無心 — el protocolo sin-mente

El puente de memoria muscular (espíritu→músculo) habla una trama de 4 campos por los mismos dos cables del flasher. Arranca armado, persistido en flash.

[0x9B][len][type][payload][xor]
  0x01  INTENT    n × uint16 µs per servo
  0x02  ANNOUNCE  1 Hz keepalive
  0x03  TELEMETRY gyro rate + correction

Despliegue

Instala la carpeta sketches/yoshimitsu como biblioteca de Arduino y abre Archivo → Ejemplos → Yoshimitsu → Yoshimitsu_Default. Flashea una vez; después, las actualizaciones son git pull o una nueva versión — el sketch queda intacto.

Resolución de Problemas