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

Test Précis de Temps de Réaction avec Arduino UNO

Composants et fournitures

Boutons poussoirs 3
LED 5 mm rouge 2
Fils de liaison mâle-mâle 1 jeu
Breadboard 1
Arduino UNO 1
Câble USB-A vers B 1
Résistance 100 Ω 2
Résistance 10 kΩ 3

Applications et services en ligne

À propos du projet

Je lisais un article sur l'impact du temps de réaction chez les athlètes, snipers, cricketers, joueurs de baseball… et sa conclusion sur les implications dans la vie quotidienne m'a frappé. Par exemple, un temps de réaction trop lent au volant peut avoir des conséquences graves.

Je me suis demandé : comment mesurer mon propre temps de réaction ? Voici le résultat.

Étape 1 : Matériel nécessaire

Test Précis de Temps de Réaction avec Arduino UNO
Test Précis de Temps de Réaction avec Arduino UNO
Test Précis de Temps de Réaction avec Arduino UNO
Test Précis de Temps de Réaction avec Arduino UNO
Test Précis de Temps de Réaction avec Arduino UNO
Test Précis de Temps de Réaction avec Arduino UNO
Test Précis de Temps de Réaction avec Arduino UNO

Logiciel : Arduino IDE. Tous ces composants trainent probablement dans le tiroir d'un amateur d'électronique. En cas de doute sur un composant, regardez les images.

Étape 2 : Procédure de mesure du temps de réaction visuel

Il existe plusieurs types de temps de réaction (auditif, visuel, tactile…). Ici on mesure le temps de réaction visuel.

Procédure :

  1. Afficher sur le moniteur série : « Appuyez sur le bouton prêt quand vous êtes prêt »
  2. Quand la personne testée appuie sur le bouton « prêt », après un délai aléatoire, l'une des deux LED s'allume (choisie aléatoirement).
  3. La personne doit appuyer sur le bouton correspondant le plus vite possible.
  4. L'Arduino mesure la différence de temps entre l'allumage de la LED et l'appui sur le bouton.
  5. Afficher le temps de réaction mesuré sur le moniteur série.

Sur les 3 boutons : 1 = bouton « prêt », 2 = bouton correspondant à LED1, 3 = bouton correspondant à LED2. (LED1 → BOUTON1, LED2 → BOUTON2).

Test Précis de Temps de Réaction avec Arduino UNO

Étape 3 : Assemblage du circuit

Test Précis de Temps de Réaction avec Arduino UNO

Points clés :

Note : les numéros de broches sont indicatifs, adaptez selon vos préférences.

Étape 4 : Le code

Le code Arduino est fourni en pièce jointe (section Code), mais je vous encourage à l'écrire vous-même. Points clés à respecter :

En cas de doute, visionnez la vidéo jointe.

Étape 5 : Tests

Tout est prêt. Appelez vos amis, voyons qui est le plus rapide ! Notez les résultats, calculez la moyenne (faites-le faire à l'Arduino) et déclarez le gagnant. Ma vidéo de démo est jointe. Temps de réaction visuel moyen : ~250 ms.

PS : si c'est plus que ça après quelques verres, ne conduisez pas.

Code

Code Arduino pour mesurer votre temps de réaction

Lancez le code et ouvrez le moniteur série.

// numéros de broches
const int buttonPin1 = 4;  // bouton 1
const int buttonPin2 = 2;  // bouton 2
const int buttonPin3 = 7;  // bouton "prêt"
const int ledPin1 = 8;     // LED 1
const int ledPin2 = 12;    // LED 2

// variables d'état
int ledState1 = LOW, ledState2 = LOW;
int buttonState1, buttonState2, buttonState3;
int lastButtonState1 = LOW, lastButtonState2 = LOW, lastButtonState3 = LOW;

unsigned long lastDebounceTime = 0;
long debounceDelay = 20000;  // microsecondes
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("Appuyez sur le bouton 3 quand vous etes pret");
    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("Votre temps de reaction est: ");
        Serial.print(lastDebounceTime - time1);
        Serial.println(" us");
        Serial.println();
        printcount = 0;
      }
    }
    if (reading2 != buttonState2) {
      buttonState2 = reading2;
      if (buttonState2 == HIGH) {
        Serial.print("Votre temps de reaction est: ");
        Serial.print(lastDebounceTime - time1);
        Serial.println(" us");
        Serial.println();
        printcount = 0;
      }
    }
    if (reading3 != buttonState3) {
      buttonState3 = reading3;
      if (buttonState3 == HIGH) {
        Serial.println("PRET A PARTIR");
        button3Pressed = HIGH;
        takeReading = HIGH;
      }
    }
  }

  lastButtonState1 = reading1;
  lastButtonState2 = reading2;
  lastButtonState3 = reading3;
}

Schémas

Test Précis de Temps de Réaction avec Arduino UNO

Processus de fabrication

  1. Quand Remplacer Vos Fourches de Chariot Élévateur : Guide Pratique
  2. Alerte Soif Plante Intelligente – Capteur DIY pour une Hydratation Optimale
  3. Horloge à Mots Italienne avec Arduino Nano, NeoPixel, LCD et RTC
  4. Économisez les broches Arduino : clavier 4×3 sur 3 entrées analogiques
  5. Compteur kWh Sigfox fiable avec Arduino MKR Fox 1200
  6. Moniteur de température Bluetooth avec Arduino Nano
  7. Serrure à gestes sans contact : Accès sécurisé avec APDS-9960 et Arduino
  8. Circuit d'entrée analogique isolée pour Arduino : Protection contre les parasites industriels
  9. Est-il Temps de Mettre à Niveau Votre Compresseur ? Repérez les Signes Avant-Coureurs