Calcule ta latence cérébrale avec un bouton poussoir !
Do not index
Do not index
Hide CTA
Hide CTA
Video preview

Objectifs

Dans cette vidéo, je vous présente comment se servir d’un bouton poussoir pour calculer votre temps de réaction.

Première partie : base du bouton poussoir

On commence par découvrir comment se servir d’un bouton poussoir au travers d’une application vous permettant au final de calculer votre temps de réaction. Sachant que la moyenne se situe autour dès 200 millisecondes, vous pouvez essayer de mesurer le vôtre à l’aide d’un simple bouton poussoir et de la LED intégrée sur le port 13 de l’Arduino UNO.
Dans la première partie de la vidéo je vous montre comment allumer une LED qui réagit à la pression d’un bouton poussoir.
const int pinBouton = 2;     // Port sur lequel est branché le bouton poussoir
int etatBouton = 0;         // variable pour stoker la lecture du status du bouton poussoir
void setup() {
  // On initialise la LED intégrée sur le port 13 de l'Arduino
  pinMode(LED_BUILTIN, OUTPUT);
  
  // On initialise le bouton poussoir en mode INPUT
  pinMode(pinBouton, INPUT);
}

void loop() {
  // On lit l'état actuel du bouton poussoir. Attention selon le montage, le bouton poussoir peut être inversé
  etatBouton = digitalRead(pinBouton);
  // Si on lit la valeur HIGH (=1) alors on allume la LED intégrée
  if (etatBouton == HIGH) {
    // Allumage de la LED :
    digitalWrite(LED_BUILTIN, HIGH);
  } 
  //Sinon, si la valeur est autre que HIGH alors on éteint la LED intégrée
  else {
    // Eteignage de la LED :
    digitalWrite(LED_BUILTIN, LOW);
  }
}

Seconde partie : Mini jeu

Dans la seconde partie de la vidéo, nous explorons le code source permettant cette fois-ci de calculer votre temps de latence cérébrale.
int delaiSurprise = 0; //Variable pour les délais surprises
unsigned long tempsDebut; //Variable qui stock l'heure de début du challenge
int pinBoutton = 2; //Port sur lequel est branché le bouton poussoir
void setup() {
  //On amorce la communication série
  Serial.begin(9600);
  randomSeed(analogRead(0));
  //Initialisation de la LED sur l'Arduino
  pinMode(LED_BUILTIN, OUTPUT);
  
  //Initialisation du port sur l'Arduino connecté au bouton poussoir
  pinMode(pinBoutton, INPUT);
  //On choisit une période aléatoire d'attente surprise entre 6 et 20 sec
  delaiSurprise = random(6000, 20000);
  //Le programme attend une période qui correspond au délai surprise
  delay(delaiSurprise);
  //On allume la LED embarquée sur l'Arduino 
  digitalWrite(LED_BUILTIN, HIGH);
  
  //On enregistre l'heure pour commencer le chronomètre
  tempsDebut = millis();
}

void loop() {
  //On lit le status sur le port du bouton poussoir
  if(digitalRead(pinBoutton) == LOW){
    
    //Calcul le temps final déduis de l'heure actuelle et de l'heure du début
    int tempsFinal = millis() - tempsDebut;
    //On envoie le résultat sur le moniteur série
    Serial.print("Temps écoulé : ");
    Serial.print(tempsFinal);
    Serial.println(" ms. Reset carte requis pour recommencer");
    //On attend 10 sec par sécurité pour éviter les appuies bouton intempestifs.
    delay(10000);
  }
}
 
Cyril

Written by

Cyril

Hobbyiste en électronique, programmation et IA