El descubrimiento inesperado
Tras instalar Fedora en el portátil y dejarlo fino —tapa controlada, botones domesticados y KDE obediente— me dio por explorar un poco más allá de la terminal y las apps comunes que uso.
Y ahí apareció SuperTuxKart.
No podia creer lo bien que estaba hecho: fluido, divertido, competitivo y sorprendentemente adictivo. Bastaron dos carreras para que surgiera la idea peligrosa:
“¿Y si me hago mi propio mando?”
No uno comprado. Uno hecho con cables, placas y sufrimiento.
La idea: un joystick USB casero
El planteamiento parecía sencillo:
- Usar una placa DigiSpark ATtiny85
- Conectarle un joystick analógico
- Emular un dispositivo HID USB
- Usarlo directamente en Linux como mando para SuperTuxKart
Pequeño, barato, sin drivers y con USB nativo. Sobre el papel, perfecto.
Y al principio… funcionó.
El primer problema: solo adelante o atrás
El joystick típico tiene dos ejes:
- Eje X → izquierda / derecha
- Eje Y → adelante / atrás
La teoría decía que podía leer ambos.
La realidad fue otra.
Solo conseguí leer un eje correctamente.
El resultado era tan absurdo como frustrante:
- Si asignaba el eje Y → podía acelerar y frenar
- Si asignaba el eje X → podía girar
Pero nunca ambas cosas a la vez.
Así que el mando funcionaba así:
- Aceleras → no giras
- Giras → no aceleras
Conducir en SuperTuxKart se convirtió en una experiencia existencial.
La solución brillante (que tampoco funcionó)
Después de pelear con lecturas analógicas, rangos y limitaciones del ATtiny85, surgió una idea:
“Pues pongo dos joysticks.”
- Uno solo para acelerar/frenar
- Otro solo para girar
Problema inmediato:
el DigiSpark no tiene pines suficientes.
Entre:
- USB
- Alimentación
- Pines analógicos reales (que en realidad no lo son tanto)
La placa se quedaba corta muy rápido.
El Frankenstein: Arduino + DigiSpark
Y entonces llegué a la fase peligrosa del proyecto:
“¿Y si uso un Arduino de intermediario?”
La arquitectura mental era algo así: Joysticks → Arduino → Serial → DigiSpark → USB → PC
El Arduino leería tranquilamente los joysticks
y el DigiSpark solo se encargaría de fingir ser un mando USB.
En mi cabeza era brillante.
En la práctica:
- Problemas de sincronización por serie
- Latencia
- Datos corruptos
- El DigiSpark perdiendo paquetes
- El juego leyendo valores erráticos
A veces giraba solo.
A veces aceleraba sin tocar nada.
A veces no hacía absolutamente nada.
El mando había adquirido vida propia.
El momento de aceptar la derrota
Después de horas de pruebas, cables cambiados, sketches reescritos y demasiados reinicios, quedó claro:
- El DigiSpark es increíble… para lo que es
- Pero no para manejar múltiples ejes analógicos en tiempo real
- Ni para actuar como puente fiable entre dispositivos
El proyecto no estaba mal planteado.
Simplemente había chocado contra los límites físicos del hardware.
Conclusión: también se aprende cuando no funciona
El mando nunca llegó a ser usable en carrera real.
Pero el proyecto dejó varias lecciones claras:
- No todo lo pequeño sirve para todo
- El USB HID parece fácil… hasta que no lo es
- A veces un Arduino Pro Micro habría evitado todo el sufrimiento
- Y sobre todo: fallar también es avanzar
SuperTuxKart sigue instalado.
El joystick está guardado en un cajón.
Y el DigiSpark me mira desde la mesa como diciendo:
“No era mi guerra, jefe.”
Pero quién sabe.
Quizá este proyecto no murió.
Solo está… suspendido en RAM.
¡Nos vemos en el próximo log!
Comentarios