Menú Cerrar

Entrenador COBRA

🇬🇧 English Version of the Post at: hackaday

6 ventajas de entrenar los reflejos

Cobra
Cobra

Entrenar los reflejos ofrece una serie de ventajas y beneficios tanto en la vida cotidiana como en diversos ámbitos deportivos. Algunas de las ventajas más destacadas son las siguientes:

  1. Mejora de la coordinación: Al entrenar los reflejos, se fortalece la conexión entre el cerebro y los músculos, lo que conduce a una mayor coordinación. Esto se traduce en movimientos más precisos y rápidos en diversas actividades físicas y deportivas.
  2. Mayor velocidad de reacción: Los reflejos entrenados permiten que el cuerpo reaccione más rápidamente ante estímulos o situaciones imprevistas. Esto es especialmente útil en deportes de reacción rápida, como el tenis, el boxeo o el fútbol, donde una respuesta veloz puede marcar la diferencia.
  3. Incremento de la seguridad personal: Al mejorar los reflejos, se aumenta la capacidad de reaccionar de manera más eficiente frente a situaciones de peligro o accidentes. Esto puede ser crucial en actividades cotidianas, como conducir o caminar por lugares concurridos.
  4. Reducción del riesgo de lesiones: Los reflejos rápidos y precisos ayudan a proteger el cuerpo al responder de manera adecuada ante movimientos bruscos o situaciones de riesgo. Esto disminuye las posibilidades de sufrir lesiones musculares, articulares o caídas.
  5. Estimulación cognitiva: El entrenamiento de los reflejos implica desafiar al cerebro y mantenerlo activo. Esto puede tener beneficios cognitivos más amplios, como mejorar la atención, la concentración y la agilidad mental en general.
  6. Mejora del rendimiento deportivo: En disciplinas deportivas que requieren movimientos rápidos y reacciones instantáneas, como el tenis, el baloncesto o el fútbol, entrenar los reflejos puede marcar la diferencia en el rendimiento. Los deportistas con reflejos bien desarrollados tienen una ventaja competitiva al poder anticipar y responder rápidamente a las acciones de sus oponentes.

En resumen, entrenar los reflejos ofrece una serie de beneficios que van desde la mejora de la coordinación y la velocidad de reacción hasta el incremento de la seguridad personal y el rendimiento deportivo. Además, estimula el cerebro y puede contribuir a un mejor funcionamiento cognitivo en general.

Es frecuentemente usado por e-gamers y artistas marciales. En este vídeo puedes ver a Vasyl Lomachenko utilizando uno de estos dispositivos.

¿Cómo funciona?

Tienes una Guía Rápida:

Encendido

Alimentador
Alimentador

Para encenderlo, sólo hay que conectarlo el cable USB a una fuente de alimentación. Tras una pantalla de bienvenida aparece el Menú de Entrenamientos.

Menú
Menú

La opción actualmente seleccionada, se muestra con el cursor: =>
Se puede cambiar de opción con los pads encendidos:

  • rojo: arriba
  • verde: abajo
  • azul: para Entrar en la opción seleccionada.

Modos de entrenamiento

Reacción

Se irá encendiendo un pad aleatorio de color rojo. Hay que pulsarlo lo más rápidamente posible.
Entre la pulsación y el siguiente encendido, hay un tiempo de espera aleatorio.

En la pantalla se muestra el #número de repetición, el tiempo de reacción y las estadísticas (Máximo, mínimo y media de los tiempos de reacción de la serie).

Continuo

Similar al modo de Reacción pero sin tiempo de espera entre repeticiones.

Decisión

Aleatoriamente, se ira encendiendo un pad de color rojo o verde:

  • Si es verde: Pulsar lo más rápidamente posible.
  • Si es rojo: No pulsar. Si se pulsa, será contabilizado como fallo.

Pantalla final

Pantalla Final
Pantalla Final

Muestra el # número de repeticiones realizadas.
Los valores:

  • Máximo: El mayor tiempo. La reacción más lenta.
  • Media: Media aritmética de los tiempos de todas las repeticiones
  • Mínimo: El menor tiempo. La reacción más rápida.

En el modo de funcionamiento: “Decisión” también se incluye el número de Fallos (veces que se ha pulsado indebidamente el pad rojo):

Pantalla Final Decisión
Pantalla Final Decisión

Parada automática

Si transcurren más de 2 segundos sin pulsar el pad tras el encendido del led, se aborta el programa y se vuelve al menú principal.

Este valor puede modificarse con el valor ‘waitLimit’ en el firmware.

Configuración

Entrando en configuración, se puede cambiar el numero de repeticiones.

  • pad rojo: Incrementa número.
  • pad verde: Decrementa número.
  • pad azul: Definir valor.

Hardware

Esquema

Extraordinariamente sencillo. La PCB actúa como una shield para el arduino. Incorpora un buzzer, la resistencia y el condensador de protección de los neopixeles y los conectores para:

  • LCD I2C
  • Neopixeles
  • 14 pads

PCB

Diseñada con KiCad EDA.

La PCB ha sido orgullosamente fabricada por:

PCBWay

Tiene unas dimensiones de 203.1x96mm y un grosor de 1,6mm. Consta de 2 capas. El material base es: FR-4: TG130. El acabado es Immersion gold(ENIG). La máscara de soldadura es Negra mate y Serigrafía blanca.

Las escamas de la Cobra se han rellenado de soldadura.

Soldando Escamas
Escamas Soldadas
Escamas Soldadas

Pads Capacitivos

Efecto Capacitivo

Pads hexagonales impresos en 3D se han recubierto de cinta de aluminio conductora. Uno de los dos tornillos de fijación se utiliza para conectar el cable que va a una entrada del arduino. En el centro está instalado un neopixel.

Las conexiones al arduino se hacen de forma casual. Para establecer qué pad va a qué entrada, Encendemos los neopixeles sucesivamente e imprimimos el número de entrada por el puerto serie con el siguiente software:

Los incorporamos al software mediante la matriz:

int neoPix [] = {99, 99, 99, 99, 99, 99, 99, 1, 0, 2, 6, 3, 5, 4}; // Índice pad, da nº de neo Pixel. 99 para pines no ocupados

Aunque sólo hay 7 pads conectados, todo está preparado para añadir otros 7 pads externos.

Piezas impresas en 3D

Todas las piezas han sido diseñadas con el software freeCAD. Puedes descarte el archivo del diseño en formato freeCAD y los archivos .stl de las piezas de aquí:

freeCAD
freeCAD
Impresión 3D
Impresión 3D

Software

Puedes programarlo con el arduino IDE.

Arduino IDE
Arduino IDE

Máquina de Estados

El software se estructura como una máquina de estados definidos por la variable ‘machineState’

...while (machineState == 0) { // init MENU
...while (machineState == 8) { // MENU
...while (machineState == 1) { // Reacción
...while (machineState == 2) { // Continuo
...while (machineState == 3) { // Decision
...while (machineState == 4) { // init Configuración
...while (machineState == 5) { // Configuración
...while (machineState == 9) { // Ended

Medición capacitiva

La medición capacitiva, la realiza la función ‘readCapacitivePin’ definida según se describe en: «Native Capacitive Sensors without additional Hardware».

uint8_t readCapacitivePin(int pinToMeasure) {
  // Variables used to translate from Arduino to AVR pin naming
  volatile uint8_t* port;
  volatile uint8_t* ddr;
  volatile uint8_t* pin;
  // Here we translate the input pin number from
  //  Arduino pin number to the AVR PORT, PIN, DDR,
  //  and which bit of those registers we care about.
  byte bitmask;
  port = portOutputRegister(digitalPinToPort(pinToMeasure));
  ddr = portModeRegister(digitalPinToPort(pinToMeasure));
  bitmask = digitalPinToBitMask(pinToMeasure);
  pin = portInputRegister(digitalPinToPort(pinToMeasure));
  // Discharge the pin first by setting it low and output
  *port &= ~(bitmask);
  *ddr  |= bitmask;
  delay(1);
  uint8_t SREG_old = SREG; //back up the AVR Status Register
  // Prevent the timer IRQ from disturbing our measurement
  noInterrupts();
  // Make the pin an input with the internal pull-up on
  *ddr &= ~(bitmask);
  *port |= bitmask;
  // Now see how long the pin to get pulled up. This manual unrolling of the loop
  // decreases the number of hardware cycles between each read of the pin,
  // thus increasing sensitivity.
  uint8_t cycles = 17;
  if (*pin & bitmask) {
    cycles =  0;
  }
  else if (*pin & bitmask) {
    cycles =  1;
  }
  else if (*pin & bitmask) {
    cycles =  2;
  }
  else if (*pin & bitmask) {
    cycles =  3;
  }
  else if (*pin & bitmask) {
    cycles =  4;
  }
  else if (*pin & bitmask) {
    cycles =  5;
  }
  else if (*pin & bitmask) {
    cycles =  6;
  }
  else if (*pin & bitmask) {
    cycles =  7;
  }
  else if (*pin & bitmask) {
    cycles =  8;
  }
  else if (*pin & bitmask) {
    cycles =  9;
  }
  else if (*pin & bitmask) {
    cycles = 10;
  }
  else if (*pin & bitmask) {
    cycles = 11;
  }
  else if (*pin & bitmask) {
    cycles = 12;
  }
  else if (*pin & bitmask) {
    cycles = 13;
  }
  else if (*pin & bitmask) {
    cycles = 14;
  }
  else if (*pin & bitmask) {
    cycles = 15;
  }
  else if (*pin & bitmask) {
    cycles = 16;
  }
  // End of timing-critical section; turn interrupts back on if they were on before, or leave them off if they were off before
  SREG = SREG_old;
  // Discharge the pin again by setting it low and output
  //  It's important to leave the pins low if you want to
  //  be able to touch more than 1 sensor at a time - if
  //  the sensor is left pulled high, when you touch
  //  two sensors, your body will transfer the charge between
  //  sensors.
  *port &= ~(bitmask);
  *ddr  |= bitmask;
  return cycles;
}

Esta función pone a tierra el pin. Después lo pone a nivel alto y mide el tiempo que tarda en alcanzarlo. Cuanto mayor sea la capacidad acoplada al pin, más tardará en alcanzar el nivel alto, más lejos iremos en la retahila de ‘else if’ y ‘cycles’ tendrá un valor mayor. En el vídeo que sigue, puede apreciarse que el tiempo que tarda el pin en subir es mayor cuando se toca con la mano y por tanto incrementa su capacidad. En la pantalla del fondo (no se ve muy bien) se está representando el valor de ‘cycles’. Aumenta al tocarlo.

Se establece un valor umbral: ‘int threshold = 5’ que determina cuando se está tocando el pad y cuando no:

capPin[0] = readCapacitivePin(pin[0]);
    if (capPin[0] > threshold) {
      // Se está tocando el pad
    } else {
      // No se está tocando el pad
      }

Artículos relacionados

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de privacidad, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies