Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Test de Precisión de Tiempo de Reacción con Arduino UNO

Componentes y suministros

Componente Cantidad
Pulsadores 3
LED 5mm Rojo 2
Cables jumper macho-macho 1
Protoboard (genérica) 1
Arduino UNO 1
Cable USB-A a B 1
Resistencia 100 Ω 2
Resistencia 10k Ω 3

Aplicaciones y servicios online

Sobre el proyecto

Leí un artículo sobre cómo el tiempo de reacción afecta a atletas, francotiradores, jugadores de cricket y béisbol, y concluía su impacto en la vida cotidiana. Me sorprendió: un tiempo de reacción lento al conducir puede tener graves consecuencias.

Me pregunté: ¿cómo medir mi tiempo de reacción? Este es el resultado.

Paso 1: Qué necesitamos

Hardware:

Test de Precisión de Tiempo de Reacción con Arduino UNO
Test de Precisión de Tiempo de Reacción con Arduino UNO
Test de Precisión de Tiempo de Reacción con Arduino UNO
Test de Precisión de Tiempo de Reacción con Arduino UNO
Test de Precisión de Tiempo de Reacción con Arduino UNO
Test de Precisión de Tiempo de Reacción con Arduino UNO
Test de Precisión de Tiempo de Reacción con Arduino UNO

Software: Arduino IDE

Todos los componentes los tendrá cualquier aficionado a la electrónica. Si dudas sobre alguno, mira las imágenes.

Paso 2: Procedimiento para medir tiempo de reacción (RT)

Existen muchos tipos: auditivo, visual, táctil… Aquí medimos tiempo de reacción visual.

Procedimiento:

  1. Mostrar en monitor serie: "pulsa botón listo cuando estés listo".
  2. Cuando el sujeto pulsa botón listo, tras intervalo aleatorio, se enciende uno de los 2 LEDs (aleatoriamente).
  3. El sujeto debe pulsar el botón correspondiente lo más rápido posible.
  4. Arduino mide diferencia de tiempo entre encendido LED y pulsación botón.
  5. Muestra tiempo de reacción medido en monitor serie.

De los 3 botones: uno es "listo", los otros dos corresponden a cada LED (LED1→BOTÓN1, LED2→BOTÓN2).

Test de Precisión de Tiempo de Reacción con Arduino UNO

Paso 3: Montaje

En la imagen ves el circuito. Puntos clave:

Nota: Los pines pueden variar según tu elección; son mis preferencias.

Test de Precisión de Tiempo de Reacción con Arduino UNO

Paso 4: Programemos

Adjunto código Arduino para descargar y probar, pero te sugiero escribir el tuyo. Puntos clave al programar:

Si dudas, revisa el video adjunto.

Paso 5: ¡A probar!

Llama a amigos y ve quién es más rápido. Haz tabla, calcula media (mejor que lo haga Arduino) y declara ganador. Adjunto video demo. Tiempo medio reacción visual ~250 ms.

PD: si tras copas te da >250 ms, ¡no conduzcas!

Código

Código Arduino para medir tu tiempo de reacción Arduino

Ejecuta y abre monitor serie.

// asignar pines:
const int buttonPin1 = 4; // pulsador 1
const int buttonPin2 = 2; // pulsador 2
const int buttonPin3 = 7; // pulsador 3 (listo)
const int ledPin1 = 8;    // LED 1 ánodo (+)
const int ledPin2 = 12;   // LED 2 ánodo (+)

// Variables:
int ledState1 = LOW, ledState2 = LOW;
int buttonState1, buttonState2, buttonState3;
int lastButtonState1 = LOW, lastButtonState2 = LOW, lastButtonState3 = LOW;
unsigned long lastDebounceTime = 0;
long debounceDelay = 20000; // microsegundos
unsigned long randNumber;
unsigned long minRandomNumber = 2000;
unsigned long maxRandomNumber = 5000;
unsigned long time1, time2;
int button3Pressed = LOW;
int printcount = 0;
int takeReading = LOW;
int reading1, reading2, reading3;
int oddNumber, evenNumber;

void setup() {
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  Serial.begin(115200);
  digitalWrite(ledPin1, ledState1);
  digitalWrite(ledPin2, ledState2);
  randomSeed(analogRead(0));
}

void loop() {
  if(printcount == 0) {
    Serial.println("pulsa boton 3 cuando estes listo");
    printcount = 1;
    takeReading = LOW;
    oddNumber = LOW; evenNumber = LOW;
  }
  if(button3Pressed == HIGH) {
    digitalWrite(ledPin1, LOW);
    digitalWrite(ledPin2, LOW);
    randNumber = random(minRandomNumber, maxRandomNumber);
    delay(randNumber);
    if(randNumber & 1 == 1) {
      digitalWrite(ledPin1, HIGH);
      digitalWrite(ledPin2, LOW);
      time1 = micros();
      oddNumber = HIGH;
    } else {
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, HIGH);
      time1 = micros();
      evenNumber = HIGH;
    }
    button3Pressed = LOW;
  }
  reading3 = digitalRead(buttonPin3);
  if(takeReading == HIGH) {
    if(oddNumber == HIGH) reading1 = digitalRead(buttonPin1);
    if(evenNumber == HIGH) reading2 = digitalRead(buttonPin2);
  }
  if(reading1 != lastButtonState1 || reading2 != lastButtonState2 || reading3 != lastButtonState3) {
    lastDebounceTime = micros();
  }
  if((micros() - lastDebounceTime) > debounceDelay) {
    if(reading1 != buttonState1) {
      buttonState1 = reading1;
      if(buttonState1 == HIGH) {
        Serial.print("Tu tiempo de reaccion es: ");
        Serial.print(lastDebounceTime - time1);
        Serial.println("us");
        Serial.println();
        printcount = 0;
      }
    }
    if(reading2 != buttonState2) {
      buttonState2 = reading2;
      if(buttonState2 == HIGH) {
        Serial.print("Tu tiempo de reaccion es: ");
        Serial.print(lastDebounceTime - time1);
        Serial.println("us");
        Serial.println();
        printcount = 0;
      }
    }
    if(reading3 != buttonState3) {
      buttonState3 = reading3;
      if(buttonState3 == HIGH) {
        Serial.println("LISTO PARA EMPEZAR");
        button3Pressed = HIGH;
        takeReading = HIGH;
      }
    }
  }
  lastButtonState1 = reading1;
  lastButtonState2 = reading2;
  lastButtonState3 = reading3;
}

Esquemáticos

Test de Precisión de Tiempo de Reacción con Arduino UNO

Proceso de manufactura

  1. Alerta de Sed Inteligente para Plantas: Sensor DIY para Riego Óptimo
  2. Reloj de Palabras en Italiano con Arduino Nano, NeoPixel, LCD y RTC
  3. Ahorra Pines en Arduino: Conecta Teclado 4x3 con Solo 3 Conexiones Analógicas
  4. Medidor kWh Sigfox Fiable con Arduino MKR Fox 1200
  5. Monitor de temperatura con Bluetooth usando Arduino Nano
  6. Cerradura por Gestos Sin Contacto: Acceso Seguro con APDS-9960 y Arduino
  7. Kit Compañero Arduino Nano: Componentes y Herramientas Esenciales para Electrónica DIY
  8. Kit Adaptador USB MIDI para Arduino Micro / Leonardo: Lista Completa de Componentes
  9. Circuito de entrada analógica aislada para Arduino
  10. Cuándo Reemplazar las Horquillas de su Montacargas: Guía Práctica
  11. ¿Es Hora de Actualizar tu Compresor? Detecta las Señales a Tiempo