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

Mide tu tiempo de reacción

Componentes y suministros

pulsadores
× 3
LED de 5 mm:rojo
× 2
Cables de puente macho / macho
× 1
Breadboard (genérico)
× 1
Arduino UNO
× 1
Cable USB-A a B
× 1
Resistencia de 100 ohmios
× 2
Resistencia de 10k ohmios
× 3

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Estaba leyendo un artículo en el que el escritor intentaba impresionar sobre el efecto del tiempo de reacción en la vida de los atletas, francotiradores, jugadores de críquet y jugadores de béisbol. Finalmente concluyó con su efecto en la vida de las personas normales y me asombró ver que el tiempo de reacción tenía muchas implicaciones en nuestro día a día.

Por ejemplo, un tiempo de reacción más lento de lo normal mientras se conduce puede tener graves consecuencias.

Pensé, ¿cómo puedo medir mi tiempo de reacción?

A continuación se muestra el resultado.

Paso 1:cosas que necesitaremos

A continuación se muestra la lista de cosas que necesitaremos para medir nuestro tiempo de reacción.

Hardware:

Software:

  • IDE de Arduino

Los componentes mencionados anteriormente deben estar en el piso de un aficionado a la electrónica :).

Si tiene alguna duda con respecto a alguno de los componentes, simplemente mire las imágenes.

Paso 2:¿Cuál será nuestro procedimiento para medir el tiempo de reacción (RT)?

Hay muchos tiempos de reacción involucrados en nuestro cuerpo humano. tenemos Audio RT, visual RT, Touch RT y muchos más. En este instructable veremos cómo medir

Tiempo de reacción visual.

Procedimiento de medición del tiempo de reacción visual:

  • Aparece un mensaje en el monitor serial de Arduino "presione el botón listo cuando esté listo"
  • Cuando la persona bajo prueba presiona el botón listo, después de un intervalo de tiempo aleatorio, uno de los dos LED debe encenderse demasiado al azar.
  • La persona bajo prueba debe presionar el botón correspondiente lo antes posible.
  • Arduino tomará nota de la diferencia de tiempo entre la iluminación del LED y la persona que presiona el botón correspondiente.
  • Ponga el mensaje del tiempo de reacción medido en el monitor serial Arduino.

Permítanme aclarar que de la lista de componentes de hardware que he mencionado, de 3 botones, un botón actuará como botón listo y los dos botones restantes lo harán

corresponden a dos LED, es decir, LED1 -> BUTTON1, LED2 -> BUTTON2. lo que significa que si el LED1 se enciende, la persona bajo prueba debe presionar BOTÓN1 similar en el caso de

LED2.

Paso 3:armar las cosas

En la imagen de arriba se puede ver la construcción del circuito. déjeme poner algunos puntos aquí.

  • conecte 5V y GND desde la placa arduino a su placa de pruebas.
  • conecte el cátodo de ambos LED a través de resistencias de limitación de corriente de 100 ohmios.
  • conecte el ánodo de LED1 y LED2 al pin número 8 y 12 respectivamente.
  • botones de inserción de complementos como se muestra en la imagen. (en el caso de los botones cuando el botón está abierto, los cables de los lados se acortan, cuando se presiona el botón, los cables diagonales
  • se acorta)
  • conecte la resistencia de 10K Ohm como se muestra en la imagen, esto actúa como una resistencia desplegable.
  • conecte otro cable al riel de 5V en la placa de pruebas.
  • y finalmente conecte los botones al pin número 2, 4 y 7 de la placa Arduino.

Nota: Los números de PIN que mencioné anteriormente pueden variar según su elección, acabo de mencionar mi preferencia.


Paso 4:Permite codificar

He adjuntado el código Arduino para el instructable, que puede descargar y comenzar a jugar, pero le sugiero que escriba el suyo. A continuación se presentan algunos puntos que debe tener en cuenta al escribir su código.

  • Cuida la denuncia de pulsadores.
  • Tenga cuidado de que el código proporcione una buena resolución al medir el tiempo de reacción.
  • Utilice el monitor en serie para la depuración y la interfaz humana.

Si tiene dudas sobre alguno de los pasos anteriores, simplemente revise el video adjunto.

Paso 5:tiempo de prueba

Todo listo, llama a tus amigos y veamos quién es el más rápido. Prepare el gráfico, tome el promedio (mejor haga que arduino lo haga) y declare el ganador. He adjuntado mi video de demostración, siéntase libre de echar un vistazo. El tiempo medio de reacción visual para nosotros es de unos 250 ms.

PD:si es más que esto después de las bebidas, no conduzca.


Código

  • Código Arduino para medir su tiempo de reacción.
Código Arduino para medir su tiempo de reacción. Arduino
simplemente ejecute el código y abra el monitor serial.
 // establezca los números de pin:const int buttonPin1 =4; // el número del pushbutton1 pinconst int buttonPin2 =2; // el número del pushbutton2 pinconst int buttonPin3 =7; // el número del pushbutton3 pinconst int ledPin1 =8; // el número del ánodo LED1 (+) pinconst int ledPin2 =12; // el número del pin del ánodo LED2 (+) // Las variables cambiarán:int ledState1 =LOW; // el estado actual del LED1int ledState2 =LOW; // el estado actual del LED2int buttonState1; // la lectura actual de la entrada pin1int buttonState2; // la lectura actual de la entrada pin2int buttonState3; // la lectura actual de la entrada pin3int lastButtonState1 =LOW; // la lectura anterior de la entrada pin1int lastButtonState2 =LOW; // la lectura anterior de la entrada pin2int lastButtonState3 =LOW; // la lectura anterior del pin3 de entrada // las siguientes variables son largas porque el tiempo, medido en microsegundos, // se convertirá rápidamente en un número mayor que el que se puede almacenar en un int.unsigned long lastDebounceTime =0; // la última vez que se alteró el pin de salida largo debounceDelay =20000; // el tiempo de supresión de rebotes en micro secondunsigned long randNumber; // Número aleatorio generado sin signo largo minRandomNumber =2000; // número mínimo utilizado para especificar el rango de números aleatoriosunsigned long maxRandomNumber =5000; // número máximo utilizado para especificar el rango de números aleatorios unsigned long time1, time2; int button3Pressed =LOW; int printcount =0; int takeReading =LOW; // siguiente variable ayuda en la lectura de botones pinsint reading1; int reading2; int read3; / / siguiente ayuda variable en la lectura del botón correspondiente al led correspondiente, es decir, LED1 -> BUTTON1 y LED2 -> BUTTON2int oddNumber; int evenNumber; void setup () {pinMode (buttonPin1, INPUT); pinMode (buttonPin2, ENTRADA); pinMode (buttonPin3, INPUT); pinMode (ledPin1, SALIDA); pinMode (ledPin2, SALIDA); // habilitando la comunicación serial Serial.begin (115200); // establece el estado inicial del LED digitalWrite (ledPin1, ledState1); escritura digital (ledPin2, ledState2); // si el pin 0 de entrada analógica no está conectado, el ruido // analógico aleatorio hará que la llamada a randomSeed () genere // números de semilla diferentes cada vez que se ejecute el boceto. // randomSeed () luego barajará la función aleatoria. randomSeed (analogRead (0));} void loop () {if (printcount ==0) {Serial.println ("presione el botón 3 cuando esté listo"); printcount =1; takeReading =LOW; // no leer el botón número 1 y 2 oddNumber =LOW; evenNumber =LOW; } if (button3Pressed ==HIGH) {digitalWrite (ledPin1, LOW); digitalWrite (ledPin2, BAJO); randNumber =aleatorio (minRandomNumber, maxRandomNumber); // en nuestro código los hemos mantenido con un retraso de 2000 a 5000 (randNumber); if (randNumber &1 ==1) {digitalWrite (ledPin1, HIGH); digitalWrite (ledPin2, BAJO); tiempo1 =micros (); //Serial.println("ODD "); oddNumber =HIGH; } else {digitalWrite (ledPin1, LOW); digitalWrite (ledPin2, ALTO); tiempo1 =micros (); //Serial.println("EVEN "); evenNumber =HIGH; } button3Pressed =LOW; } lectura3 =digitalRead (buttonPin3); // leer button3 if (takeReading ==HIGH) {if (oddNumber ==HIGH) reading1 =digitalRead (buttonPin1); if (evenNumber ==HIGH) reading2 =digitalRead (buttonPin2); } // Si el interruptor cambió, debido al ruido o presionando:if (lectura1! =LastButtonState1 || lectura2! =LastButtonState2 || lectura3! =LastButtonState3) {// reinicia el temporizador antirrebote lastDebounceTime =micros (); } if ((micros () - lastDebounceTime)> debounceDelay) {// cualquiera que sea la lectura, ha estado ahí por más tiempo // que el retardo de rebote, así que tómelo como el estado actual real:// si el estado del botón ha cambiado:if (lectura1! =buttonState1) {buttonState1 =reading1; // solo cambia el LED si el nuevo estado del botón es ALTO if (buttonState1 ==HIGH) {Serial.print ("Tu tiempo de reacción es:"); Serial.print (lastDebounceTime - time1); Serial.println ("nosotros"); Serial.println (); printcount =0; }} if (lectura2! =buttonState2) {buttonState2 =reading2; // solo cambia el LED si el nuevo estado del botón es ALTO if (buttonState2 ==HIGH) {Serial.print ("Tu tiempo de reacción es:"); Serial.print (lastDebounceTime - time1); Serial.println ("nosotros"); Serial.println (); printcount =0; }} if (leyendo3! =buttonState3) {buttonState3 =reading3; // solo cambia el LED si el nuevo estado del botón es ALTO if (buttonState3 ==HIGH) {Serial.println ("LISTO PARA IR"); button3Pressed =HIGH; takeReading =HIGH; }}} // guarda la lectura. La próxima vez a través del bucle, // será lastButtonState:lastButtonState1 =reading1; lastButtonState2 =reading2; lastButtonState3 =reading3;} 

Esquemas


Proceso de manufactura

  1. ¿Es hora de reemplazar las horquillas elevadoras?
  2. Alerta de sed Alarma de planta
  3. Reloj Word en italiano
  4. Solo tres pines para un teclado de 4x3
  5. Medidor de kWh Sigfox
  6. Monitor de temperatura Bluetooth
  7. Bloqueo controlado por gestos
  8. El IC complementario
  9. Adaptador MIDI USB
  10. Una entrada analógica aislada para Arduino
  11. ¿Es hora de actualizar su compresor?