Skyduino:~#
Articles
arduino, Autre, Corrigé, programmation

[MSP430 Energia] Mesure du temps de réaction

Bonjour tout le monde !

Ça faisait déjà quelques temps qu’on m’avait demandé de publier un petit programme sympa pour la launchpad MSP430.
Depuis que j’ai découvert l’ide Energia (voir mon article d’il y a quelques semaines) qui permet de programmer « en arduino » sur la launchpad je m’amuse à faire des petits programmes suivant mes envies.

Hier, à l’apéro (bien obligé, fait chauuuuuudd) tout le monde s’est mis d’accord sur le fait que 1) je dormais pas assez, 2) j’avais un temps de réaction digne d’un petit vieux de 95 ans …

C’est pourquoi aujourd’hui je vous propose de faire un outils mesurant le temps de réaction d’une personne !
Et ainsi rabattre le clapet à cette bande de *bip* gentil personnes 🙂

Le principe :

Une led, un bouton, quand la led s’allume il faut appuyer sur le bouton le plus vite possible.
On ne peut pas faire plus simple 😉

Le montage :

Pour le coup il n’y en a pas, la launchpad a déjà un bouton et deux led intégrées de base.
Au final c’est peut être pas plus mal, parce que sortir la breadboard pendant un apero faut le vouloir …

Il y a cependant une petite chose à ne pas oublier !
Et oui, il faut bien mettre le jumper du port série en position « HW UART » sinon ça marche pas 😉

Le code :

Il est très simple et très court, ça ne casse pas trois pâte à un canard 😉

Quelques petites remarques cependant :
– pour utiliser le bouton il faut faire un pinMode(x, INPUT_PULLUP) et non un duo pinMode(INPUT) + digitalWrite(HIGH), sur les MSP430 ça ne marche pas (?)
– les fonctions randomSeed() et random() ne sont implémentées que depuis la beta7 de Energia, pour éviter les problèmes j’utilise les fonctions srand() et rand() de la libc

/* Includes */
#include <stdlib.h> // Pour srand() et rand()
// Remarque: les fonctions arduino : random() et randomSeed() sont disponible seulement depuis la beta7 de energia

/* Broches */
const byte LED_PIN = RED_LED;  // Led
const byte BUTTON_PIN = PUSH2; // Bouton

/* Delais */
const unsigned long delay_min = 2000; // Delai minimum = 2sec
const unsigned long delay_max = 5000; // Delai maximum = 5sec

/* Setup() */
void setup() {

  /* Initialisation du port série */
  Serial.begin(9600);
  Serial.println("Skywodd reaction timer");
  
  /* Mise en sortie et à LOW de la broche de la LED */
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
  
  /* Mise en entrée avec pullup de la broche du bouton */
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  // Note: Utiliser la syntaxe pinMode(x, INPUT_PULLUP) et non pinMode(x, INPUT) puis digitalWrite(x, HIGH)
  
  /* Initialisation du générateur de nombres aléatoire */
  srand(analogRead(A0));
}

/* Loop() */
void loop() {  

  /* Delai aléatoire entre 2sec et 5sec */
  delay((rand() % delay_max) + delay_min);
  
  /* Sauvegarde du timestamp en ms à l'allumage de la led */
  unsigned long t = millis();
  
  /* Allumage de la led + attente de l'appui sur le bouton */
  digitalWrite(LED_PIN, HIGH);    // Led allumé
  while(digitalRead(BUTTON_PIN)); // Attente de l'appui sur le bouton
  digitalWrite(LED_PIN, LOW);     // Led éteinte
   
  /* Affichage du résultat */
  Serial.print("Reaction time : ");
  Serial.print(millis() - t);
  Serial.println("ms");
}

Petite parenthèse :

Je sais pas si c’est la chaleur qui fait ça mais les couleurs de l’ide Energia sont vachement plus sympa que celle de l’ide arduino officiel.

Le résultat :

Skywodd reaction timer
Reaction time : 173ms
Reaction time : 166ms
Reaction time : 168ms
Reaction time : 179ms
Reaction time : 173ms
Reaction time : 178ms
Reaction time : 222ms
Reaction time : 219ms
Reaction time : 183ms
Reaction time : 206ms
Reaction time : 180ms
Reaction time : 215ms
Reaction time : 176ms
Reaction time : 185ms
Reaction time : 184ms

D’après ce site de « benchmark humain » (humm) :
http://www.humanbenchmark.com/tests/reactiontime/stats.php

Je suis un peu mieux que la moyenne global, comme quoi je suis pas si lent du cerveau que ça, hein 🙂

Au passage je connais une certaine personne qui aurait mieux fait de se taire sur ce coup 😉
Skywodd reaction timer
Reaction time : 214ms
Reaction time : 442ms
Reaction time : 320ms
Reaction time : 223ms
Reaction time : 272ms
Reaction time : 307ms
Reaction time : 208ms
Reaction time : 286ms
Reaction time : 242ms
Reaction time : 247ms

*sifflote*
(/vengeance) Ralala fait pas bon vieillir hein =P

Enjoy 🙂

Publicités

Discussion

Pas encore de commentaire.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Skyduino devient Carnet du Maker

Le site Carnet du Maker remplace désormais le blog Skyduino pour tout ce qui touche à l'Arduino, l'informatique et au DIY.