IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Chronomètre millis


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Par défaut Chronomètre millis
    Bonjour à tous,

    Je souhaite, que lorsque un événement se passe, un chronométre se déclenche et quand ce même événement se renouvel le chronomètre s’arrète

    Le probleme dans mon programme, c'est que je ne sais pas comment arrêter le chrono
    Le "stop =millis();" ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    const int  buttonPin = 9;     // crée un identifiant pour la broche utilisée avec le bouton poussoir
    int buttonState = 0;         //Variable pour l'état actuel du bouton poussoir
    int compteur = 0;
     
    unsigned long MS; 
    unsigned long start;
    int bouton = A0;
     
    void setup() {
      // met la broche en entrée
    pinMode(buttonPin, INPUT);
    pinMode (bouton, INPUT);
    Serial.begin(9600);
    }
     
     
    void loop() {
      compteur=0;
      // lit l'état actuel du bouton poussoir et le mémorise dans la variable
      buttonState = digitalRead(buttonPin);
     
     
        if (buttonState == HIGH) {
    {
      {
        start=millis();
      }
     
      MS = millis()-start;
      /*
      centitot1 = (MS % 1000) / 10 ;        // centieme to display
       secotot1 = (MS / 1000) % 60 ;         // second to display
       minutot1 = (MS / 1000) / 60 ;         // minute to display
       */
      Serial.print ((MS / 1000) / 60);      // minutes
      Serial.print ("' ");
      Serial.print ((MS / 1000) % 60);      // secondes
      Serial.print ("'' ");
      Serial.println (MS % 1000);           // millièmes
    }
     
    }
        compteur=compteur+1;
          }
        if (compteur = 2){
    stop =millis();
     
        }
     
    }

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour

    et non classique

    Mais cela ne veut pas dire que ton code fonctionnera car il y a quelques bizarreries :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        if (buttonState == HIGH) {
    {
      {
        start=millis();
      }
    cette série d'accolades ouvrantes et fermantes plus loin, est assez étrange Il faudrait revoir tout ça.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Par défaut
    C'est vrai qu'il y avait 2 accolades en trop
    Mais je pense que mon plus gros problème est la fin du chronomètre
    Je le lance avec "start=millis();" mais je ne sais pas comment le faire s’arrêter

    PS: je tiens à dire que je n'ai toujours pas essayé ce programme avec une carte arduino car je suis lycéen et je ne peut en utiliser une seulement au lycée

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Si tu lis la documentation sur la fonction millis()
    Returns the number of milliseconds passed since the Arduino board began running the current program. This number will overflow (go back to zero), after approximately 50 days.
    La fonction millis retourne le temps écoulé depuis le démarrage du programme contenu dans l'Arduino. En d'autres termes, tu ne peux pas "démarrer" ou "arrêter" la fonction millis(). La seule façon de faire et c'est ce que tu as fait, c'est de faire une différence entre un moment t0 et un moment t1 pour déterminer la durée écoulée t1-t0.

    En quoi consiste ton projet ? A compter le nombre d'appuis sur le bouton ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Par défaut
    Mon projet consiste à connaître le temps écoulé entre 2 pression sur un bouton poussoir
    Ducoup si on ne peut pas arrêter la fonction Millis, je ne sais pas comment connaître la valeur de Millis quand "compteur == 2" (quand j'appuie une seconde fois sur le bouton poussoir)

  6. #6
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Si tu peux... je t'ai donné une piste dans mon précédent message. Comment mesures-tu le temps écoulé ?

Discussions similaires

  1. [C++ Builder 6] Timer de précision pour chronomètre
    Par doudoustephane dans le forum C++Builder
    Réponses: 9
    Dernier message: 27/09/2005, 10h45
  2. Comment faire un chronomètre en Delphi ou ASM ?
    Par PoOky dans le forum Langage
    Réponses: 8
    Dernier message: 15/06/2005, 20h49
  3. Comment chronométrer une fonction
    Par 323 dans le forum Pascal
    Réponses: 3
    Dernier message: 19/03/2003, 20h24
  4. [MFC] Boîte de dialogue chronométrée
    Par mdriesbach dans le forum MFC
    Réponses: 5
    Dernier message: 18/02/2003, 12h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo