Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Mesurez votre temps de réaction

Composants et fournitures

boutons poussoirs
× 3
LED 5 mm :Rouge
× 2
Câbles de raccordement mâle/mâle
× 1
Planche à pain (générique)
× 1
Arduino UNO
× 1
Câble USB-A vers B
× 1
Résistance 100 ohm
× 2
Résistance 10k ohm
× 3

Applications et services en ligne

Arduino IDE

À propos de ce projet

Je lisais un article où l'écrivain essayait de faire comprendre l'effet du temps de réaction sur la vie des athlètes, des tireurs d'élite, des joueurs de cricket et des joueurs de baseball. Enfin, il a conclu avec son effet sur la vie des gens normaux et j'ai été étonné de voir que le temps de réaction avait de nombreuses implications sur notre vie de tous les jours.

Par exemple, un temps de réaction plus lent que la normale au volant peut avoir des conséquences graves.

J'ai pensé, comment puis-je mesurer mon temps de réaction ?

Voici le résultat.

Étape 1 :Ce dont nous aurons besoin

Voici la liste des éléments dont nous aurons besoin pour mesurer notre temps de réaction.

Matériel :

Logiciel :

  • IDE Arduino

Les composants mentionnés ci-dessus doivent reposer sur le sol d'un amateur d'électronique :).

Si vous avez des doutes sur l'un des composants, regardez simplement les images.

Étape 2 :Quelle sera notre procédure pour mesurer le temps de réaction (RT) ?

Il y a beaucoup de temps de réaction impliqués avec notre corps humain. nous avons Audio RT, visuel RT, Touch RT et bien d'autres. Dans ce instructable, nous examinerons la mesure

Temps de réaction visuelle.

Procédure de mesure du temps de réaction visuel :

  • Affichez un message sur le moniteur série d'Arduino "Appuyez sur le bouton prêt lorsque vous êtes prêt"
  • Lorsque la personne testée appuie sur le bouton Prêt, après un intervalle de temps aléatoire, l'un des deux voyants doit s'allumer de manière trop aléatoire.
  • La personne testée doit appuyer sur le bouton correspondant dès que possible.
  • Arduino prendra note de la différence de temps entre l'allumage de la LED et la personne appuyant sur le bouton correspondant.
  • Mettez le message du temps de réaction mesuré sur le moniteur série Arduino.

Permettez-moi de préciser que dans la liste des composants matériels que j'ai mentionnés, sur 3 boutons, un bouton agira comme bouton prêt et les deux boutons restants seront

correspondent à deux LED, c'est-à-dire LED1-->BUTTON1 , LED2-->BUTTON2. ce qui signifie que si la LED1 s'allume, la personne testée doit appuyer sur le BOUTON1 comme c'est le cas pour

LED2.

Étape 3 :Assembler les choses

Dans l'image ci-dessus, vous pouvez voir la construction du circuit. permettez-moi de soulever quelques points ici.

  • connectez 5 V et GND de la carte arduino à votre maquette.
  • connectez la cathode des deux LED via des résistances de limitation de courant de 100 ohms.
  • connectez l'anode de LED1 et LED2 aux broches 8 et 12 respectivement.
  • boutons de plug-in comme indiqué dans l'image. (en cas de boutons-poussoirs lorsque le bouton est ouvert, les fils sur les côtés sont court-circuités, lorsque le bouton est enfoncé, les fils diagonaux
  • est court-circuité)
  • connectez une résistance de 10 K Ohm comme indiqué sur l'image, elle agit comme une résistance de tirage.
  • connectez un autre câble au rail 5 V sur la maquette.
  • et enfin connectez les boutons aux broches 2, 4 et 7 de la carte Arduino.

Veuillez noter : Les numéros de broche que j'ai mentionnés ci-dessus peuvent varier selon votre choix, je viens de mentionner ma préférence.


Étape 4 :Permet de coder

J'ai joint le code Arduino pour l'instructable, que vous pouvez télécharger et commencer à jouer, mais je vous suggère d'écrire le vôtre. Voici quelques points que vous devez garder à l'esprit lors de l'écriture de votre code.

  • S'occuper de la dénonciation des boutons poussoirs.
  • Veillez à ce que le code fournisse une bonne résolution pour mesurer le temps de réaction.
  • Utilisez un moniteur série pour le débogage ainsi que l'interface humaine.

Si vous avez des doutes sur l'une des étapes ci-dessus, regardez simplement la vidéo ci-jointe.

Étape 5 :Temps de test

Tout est prêt, appelez vos amis et voyons qui est le plus rapide. Préparez le graphique en prenant la moyenne (il vaut mieux que l'arduino le fasse) et déclarez le gagnant. J'ai joint ma vidéo de démonstration, n'hésitez pas à jeter un œil. Le temps de réaction visuel moyen pour nous est d'environ 250 ms.

PS :si c'est plus que ça après les boissons, veuillez ne pas conduire.


Code

  • Code Arduino pour mesurer votre temps de réaction.
Code Arduino pour mesurer votre temps de réaction.Arduino
exécutez simplement le code et ouvrez le moniteur série.
// définissez les numéros de broche :const int buttonPin1 =4 ; // le numéro du pushbutton1 pinconst int buttonPin2 =2; // le numéro du pushbutton2 pinconst int buttonPin3 =7; // le numéro du pushbutton3 pinconst int ledPin1 =8; // le numéro de l'anode LED1 (+) pinconst int ledPin2 =12; // le numéro de la broche de l'anode LED2 (+) // Les variables changeront :int ledState1 =LOW ; // l'état actuel du LED1int ledState2 =LOW; // l'état actuel du LED2int buttonState1; // la lecture actuelle de l'entrée pin1int buttonState2; // la lecture actuelle de l'entrée pin2int buttonState3; // la lecture actuelle de l'entrée pin3int lastButtonState1 =LOW; // la lecture précédente de l'entrée pin1int lastButtonState2 =LOW; // la lecture précédente de l'entrée pin2int lastButtonState3 =LOW; // la lecture précédente de la broche d'entrée3// les variables suivantes sont longues car le temps, mesuré en microsecondes,// deviendra rapidement un nombre plus grand que ce qui peut être stocké dans un int.unsigned long lastDebounceTime =0; // la dernière fois que la broche de sortie a été basculéelong debounceDelay =20000; // le temps d'anti-rebond en micro secondes unsigned long randNumber; // Nombre aléatoire généré non signé long minRandomNumber =2000; // nombre minimum utilisé pour spécifier la plage de nombres aléatoiresunsigned long maxRandomNumber =5000; // nombre maximum utilisé pour spécifier la plage de nombre aléatoireunsigned long time1,time2;int button3Pressed =LOW;int printcount =0;int takeReading =LOW;//suivant l'aide variable dans les boutons de lecture pinsint lecture1;int lecture2;int lecture3;/ /aide variable suivante dans la lecture du bouton correspondant à la led particulière, c'est-à-dire LED1 --> BUTTON1 et LED2 --> BUTTON2int oddNumber;int evenNumber;void setup(){ pinMode(buttonPin1, INPUT); pinMode(boutonPin2, INPUT); pinMode (boutonPin3, INPUT); pinMode(ledPin1, SORTIE); pinMode(ledPin2, SORTIE); //activation de la communication série Serial.begin(115200); // définit l'état initial de la LED digitalWrite(ledPin1, ledState1) ; digitalWrite(ledPin2, ledState2) ; // si la broche d'entrée analogique 0 n'est pas connectée, le bruit // analogique aléatoire entraînera l'appel à randomSeed() pour générer // des numéros de départ différents à chaque fois que l'esquisse s'exécute. // randomSeed() mélangera ensuite la fonction aléatoire. randomSeed(analogRead(0));} void loop() { if( printcount ==0) { Serial.println("appuyez sur le bouton 3 lorsque vous êtes prêt"); nombre d'impressions =1 ; prendreLecture =FAIBLE; // ne pas lire les boutons numéro 1 et 2 oddNumber =LOW; nombre pair =FAIBLE ; } if( button3Pressed ==HIGH) { digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); randNumber =random(minRandomNumber,maxRandomNumber); //dans notre code, nous les avons conservés entre 2000 et 5000 delay(randNumber); if ( randNumber &1 ==1) { digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, LOW); temps1 =micros(); //Série.println("IMPAIR"); nombre impair =HAUT ; } else { digitalWrite(ledPin1, LOW); digitalWrite (ledPin2, HAUT); temps1 =micros(); //Série.println("MÊME"); evenNumber =ÉLEVÉ ; } bouton3Appuyé =FAIBLE ; } lecture3 =digitalRead(buttonPin3) ; // read button3 if(takeReading ==HIGH) { if(oddNumber ==HIGH) reading1 =digitalRead(buttonPin1); if(evenNumber ==HIGH) reading2 =digitalRead(buttonPin2); } // Si le commutateur a changé, en raison d'un bruit ou d'un appui :if (reading1 !=lastButtonState1 || read2 !=lastButtonState2 || read3 !=lastButtonState3) { // réinitialiser la minuterie anti-rebond lastDebounceTime =micros(); } if ((micros() - lastDebounceTime)> debounceDelay) { // quelle que soit la lecture, elle est là depuis plus longtemps // que le délai anti-rebond, alors prenez-le comme état actuel :// si l'état du bouton a modifié : if (lecture1 !=buttonState1) { buttonState1 =lecture1 ; // ne bascule la LED que si le nouvel état du bouton est HAUT if (buttonState1 ==HAUT) { Serial.print("Votre temps de réaction est :"); Serial.print(lastDebounceTime - time1) ; Serial.println("nous"); Serial.println(); nombre d'impressions =0 ; } } if (reading2 !=buttonState2) { buttonState2 =read2; // ne bascule la LED que si le nouvel état du bouton est HAUT if (buttonState2 ==HAUT) { Serial.print("Votre temps de réaction est :"); Serial.print(lastDebounceTime - time1) ; Serial.println("nous"); Serial.println(); nombre d'impressions =0 ; } } if (reading3 !=buttonState3) { buttonState3 =read3; // ne bascule la LED que si le nouvel état du bouton est HAUT if (buttonState3 ==HIGH) { Serial.println("READY TO GO"); bouton3Appuyé =ÉLEVÉ ; takeReading =HAUT; } } } // enregistre la lecture. La prochaine fois dans la boucle, // ce sera le lastButtonState :lastButtonState1 =read1; lastButtonState2 =lecture2; lastButtonState3 =lecture3;}

Schémas


Processus de fabrication

  1. Est-il temps de remplacer vos fourches de chariot élévateur ?
  2. Alarme de soif d'usine
  3. Horloge de mots italienne
  4. Seulement trois broches pour un clavier 4x3
  5. Compteur kWh Sigfox
  6. Moniteur de température Bluetooth
  7. Serrure à commande gestuelle
  8. Une entrée analogique isolée pour Arduino
  9. Est-il temps de mettre à niveau votre compresseur ?