Bonjour
Voila je voudrais mesurer le temps qui s'écoule entre le moment ou j appuie sur bp9 et celui ou j appuie sur bp10 et afficher cette valeur sur le moniteur série
#define Bp9 = 9
#define Bp10 = 10
unsigned long temps1 = 0 ;
unsigned long temps2 = 0 ;
float temps3 = 0 ;
void setup()
{
Serial.begin(9600);
pinMode(Bp9,INPUT_PULLUP);
pinMode (Bp10,INPUT_PULLUP);
}
void loop()
{
if (! digitalRead(Bp9))
{
delay (50);
temps1 = millis();
while (! digitalread(Bp9));
delay(50);
}
if (! digitalRead(Bp10))
{
delay (50);
temps2 = millis();
while (! digitalread(Bp10));
delay(50);
}
temps3 = (temps2 - temps1);
println(temps3);
}[code]
Mais j obtiens les messages d 'erreurs suivants
Arduino : 1.7.10 (Windows 7), Carte : "Arduino Uno"
sketch_jan15b.ino: In function 'void setup()':
sketch_jan15b.ino:1:14: error: expected primary-expression before '=' token
sketch_jan15b.ino:11:11: note: in expansion of macro 'Bp9'
sketch_jan15b.ino:2:14: error: expected primary-expression before '=' token
sketch_jan15b.ino:12:12: note: in expansion of macro 'Bp10'
sketch_jan15b.ino: In function 'void loop()':
sketch_jan15b.ino:1:14: error: expected primary-expression before '=' token
sketch_jan15b.ino:18:20: note: in expansion of macro 'Bp9'
sketch_jan15b.ino:1:14: error: expected primary-expression before '=' token
sketch_jan15b.ino:22:23: note: in expansion of macro 'Bp9'
sketch_jan15b.ino:22:26: error: 'digitalread' was not declared in this scope
sketch_jan15b.ino:2:14: error: expected primary-expression before '=' token
sketch_jan15b.ino:26:20: note: in expansion of macro 'Bp10'
sketch_jan15b.ino:2:14: error: expected primary-expression before '=' token
sketch_jan15b.ino:30:23: note: in expansion of macro 'Bp10'
sketch_jan15b.ino:30:27: error: 'digitalread' was not declared in this scope
sketch_jan15b.ino:36:15: error: 'println' was not declared in this scope
Erreur lors de la compilation.
Ce rapport contiendrait plus d'informations si l'option
"Montrer les informations de sortie pendant la compilation"
était activée dans Fichier > Préférences.
Merci pour votre aide
j ai aussi corrigé le Serial.println j avais oublié Serial
mais j ai encore qqs erreurs
Arduino : 1.7.10 (Windows 7), Carte : "Arduino Uno"
sketch_jan15b.ino: In function 'void loop()':
sketch_jan15b.ino:22:26: error: 'digitalread' was not declared in this scope
sketch_jan15b.ino:30:27: error: 'digitalread' was not declared in this scope
Erreur lors de la compilation.
Ce rapport contiendrait plus d'informations si l'option
"Montrer les informations de sortie pendant la compilation"
était activée dans Fichier > Préférences.
C'est un peu dommage de faire des delay(50); avant d'enregistrer le moment d'appui...
C'est aussi un peu dommage de faire des attentes actives sur le relâchement du bouton.
Pour votre question mettez un booleen pour dire si le second bouton à été appuyé et tester le avant de faire l'affichage ou alors initialisez temps2 à zéro et tant qu'il est 0 ne pas faire l'affichage; (pensez le remettre à 0 ou le booléen à faux une fois l'affichage effectué)
chriiss62:
Est il possible d'éviter à temps4 d'afficher 4294962 avant un appui sur Bp 10 pour qu il me donne le bon intervalle de temps
Il y avait de l'idée dans ton programme avec if (temps3>0), cependant la différence de deux unsigned est toujours ≥ 0. Donc il faut remplacer par le test suivant:
Le problème fondamental de ton code est que, même lorsque tu l'auras mis au point, il subsistera des delay et surtout deux gros while qui bloquent l'exécution de toute autre instruction. Cela te posera problème pour ajouter d'autres fonctionnalités dans ton programme.
Je te suggère de te simplifier la gestion des boutons (ou impulsions) en utilisant cette bibliothèque, et surtout de passer dans une logique d'exécution sans blocages.
Cela nécessite de créer une ou plusieurs variables qui caractérisent l'état du système à un instant t.
Par exemple :