Bonjour,
je suis totalement debutant en programmation arduino;
je travaille sur un projet perso.
OBJECTIF:
je souhaiterais faire un jeu de reaction arduino.
Lorsque la LED verte s'allume on appuie sur un bouton et PAF! le temps de reaction s'affiche sur un LCD 16x2 ET ça ainsi de suite pendant 1min ou plusieurs cycle. puis affichage de la moyenne des temps.
PROBLEME:
Le programme de compile bien, mon cablage m'a l'air logique,
mais le l'ecran affiche toute les millisecondes jusqu'a ce que j'appui sur le bouton ( là le chrono s'arrete puis repart de zero, la Led s'eteint)
et avant cela, il affiche directement 0.00 sur la première boucle avant que j'appuie :o
je souhaite seulement affiché: "reaction time" puis " XXX.XX sec"
quelqu'un aurait la solution svp? un indice ?
ci joint mon programme et une image du cablage (proteus 8, Arduino UNO)
```
**// OBJECTIF ALLUMER 1 LED EN DELAY ALEATOIRE;
// AFFICHER LE TEMPS DE REACTION "BOUTON PRESSE/LED ALLUME" (SUR 1MIN OU 20 CYCLES).
//PARAMETRAGE LED
#define led1 10
//PARAMETRAGE ECRAN LCD 16X2
#include <LiquidCrystal.h> // inclusion de la bibliothèque
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Initialisation de la bibliothèque par rapport au cablage
//PARAMETRAGE DU BOUTON
int boutontouch = 8; // Bouton pour reaction
void setup() {
// EXPLICATION TEXTE DU PROGRAMME ................................................
lcd.begin(16, 2); // réglage du nombre de ligne et de colonne
lcd.print("SPEED TEST"); // Affiche un message
delay(1000);
lcd.clear();
lcd.print("SI LED ALLUME");
lcd.setCursor(0, 1);
lcd.print("APPUYEZ");
delay(1000);
lcd.clear();
}
void loop() {
//LED1 comme OUTPUT
pinMode(led1, OUTPUT);
//Boutontouch comme INPUT
pinMode(boutontouch, INPUT);
//nombre aléatoire generator
randomSeed(millis());
//Attendre un temps aléatoire entre 1 et 3 secondes
delay(random(100, 1000));
//Allumer la led1
digitalWrite(led1, HIGH);
//Enregistrer le temps de depart ( allumage led1)
long start = millis();
//attendre tant le bouton ( boutontouch pin8) n'est pas fermé
while (digitalRead(8))
//Afficher le temps
// lcd.print("Reaction time");
// lcd.setCursor(0, 1);
lcd.print((millis() - start) / 1000.0);
delay(1000);
lcd.clear();
digitalWrite(led1, LOW);
delay(100);
}**
```