[Exercices] [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino
Répondre à la discussion
Affichage des résultats 1 à 27 sur 27

[exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino



  1. #1
    FatehNabil

    [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino


    ------

    bonjour à tous,
    Je suis un étudiant et je suis en train de préparer mon projet de fin d'études qui se base sur la programmation Arduino.je veux calculer le temps parcourus entre deux capteurs de fin de course.

    voila le type de capteur que je vais utiliser

    capt.jpg

    capt.jpg


    et voila le code tapé sur Arduino

    ard.JPG

    -----
    Images attachées Images attachées  

  2. #2
    PIXEL

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    j'suis pas un spécialiste de l'arduimachin , mais je ne vois pas est mesuré le temps

  3. #3
    Yoruk

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    Tu ne t'intéresse qu'à un seul capteur, pas les 2...?

    Il y a un moment où il va falloir faire une soustraction entre les temps où le premier capteur est actionné et le moment où le 2eme l'est également...!

    PS : prochain coup copie-colle directement le code dans le texte de ton message, entre balises CODE histoire de faciliter sa lecture
    La robotique, c'est fantastique !

  4. #4
    FatehNabil

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    J'ai pas trouvé sur Arduino que cette fonction (unsigned_long_time= millis () ) qui permet de calculer le temps écoulé à partir du fonctionnement de programme.si vous avez une autre idée n'hésitez pas de m'aider et merci d'avance

  5. A voir en vidéo sur Futura
  6. #5
    Yoruk

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    Enregistre dans une première variable le temps où tu détectes l'appui sur le 1er capteur

    Et au moment où le second est actionné, tu enregistres à nouveau le temps dans une 2eme variable

    Puis tu fais la soustraction...!
    La robotique, c'est fantastique !

  7. #6
    FatehNabil

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    Code:
    // definition des variables 
    int COM1=7;
    int COM2=13;
    unsigned long time;
    
    
    void setup() {
      
    Serial.begin(9600);           // initialisation de la communication série à 9600 bauds
    pinMode(COM1,INPUT);         //configure la broche 7 en entrée
    pinMode (COM2,INPUT);       //configure la broche 13 en entrée
    digitalWrite(COM1, HIGH);  // écrit la valeur HIGH (=1) sur la broche en entrée ce qui active la résistance de "rappel au +" (pullup) au plus de la broche
                                
    }
    
    void loop()  
    {
      boolean changementEtat=digitalRead(7);
      if (changementEtat)
      Serial.print("Time: ");   // affiche le texte dans la fenêtre Terminal côté PC
      time = millis();         //affiche sur le PC le temps depuis que le programme a démarré  
      t1=time;
    boolean etatContact=digitalRead(13);
    if (!etatContact)
    Serial.println ("contact");
    Serial.println(time);     // affiche le temps écoulé depuis que le programme a démarré
    delay(1000);             // attend une seconde pour ne pas envoyer un trop grand nombre de donnée vers le PC
    
    }

  8. #7
    FatehNabil

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    je ne sais pas s'il est correcte ce code ou bien non.

  9. #8
    Yoruk

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    La syntaxe des IF est fausse.

    Pour savoir si le code est bon, demande à l'IDE arduino... Tu vas bien voir s'il t'indique des erreurs ou non !
    La robotique, c'est fantastique !

  10. #9
    FatehNabil

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    déja j'ai complié le programme sur Arduino et il ne m'affiche pas des erreurs.
    Mais juste je veux savoir est ce que l'architecture du programme et le contenu me permet de calculer le temps parcourus entre les deux capteurs.
    merci d'avance

  11. #10
    Yoruk

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    J'ai parlé d'une soustraction entre 2 variables à un moment. Elle est où ?

    Et non, ton code ne va pas fonctionner. (même s'il indique que la compilation se passe sans erreurs !). Vérifie tes IFs. (Bon je t'aide, rajoute des { } )
    La robotique, c'est fantastique !

  12. #11
    FatehNabil

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    ok merci à vous

  13. #12
    PIXEL

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    tu pourrais montrer l'organigramme de ce soft ?

  14. #13
    freepicbasic

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    Les conctacts sont actifs au niveau haut.

    En espérant que le temps est supérieur à l'envoie de la chaine "contact 1"
    Sinon enlevé cette ligne

    Code:
    // definition des variables 
    int COM1=7;
    int COM2=13;
    unsigned long time;
    
    
    void setup() {
      
    Serial.begin(9600);           // initialisation de la communication série à 9600 bauds
    pinMode(COM1,INPUT);         //configure la broche 7 en entrée
    pinMode (COM2,INPUT);       //configure la broche 13 en entrée
                                
    }
    
    void loop()  
    {
      Serial.print("Attend contact 1 ");
      while (digitalRead(7) == LOW) ;
      time = millis();         //affiche sur le PC le temps depuis que le programme a démarré  
      Serial.print("Contact 1 ");   // affiche le texte dans la fenêtre Terminal côté PC
    
      while (digitalRead(13) == LOW);
      time = millis() - time ;
      Serial.println ("contact 2");
      Serial.println(diff);     // affiche le temps écoulé depuis que le programme a démarré
    
    delay(1000);             // attend une seconde pour ne pas envoyer un trop grand nombre de donnée vers le PC
    
    }
    A+, pat

  15. #14
    adipie

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino


  16. #15
    paulfjujo

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    bonsoir,

    Tu as besoin de quelle resolution temporelle, sachant qu'un contact peut avoir des rebonds !
    une solution ultra simpliste :
    à +-50ms pres
    usage du terminal Vbray avec l'option time
    à chaque changement d'etat de ton entree tu envoies un CR LF sur l'UART ( à 19200 ou 38400bauds)
    VBray terminal te donne le temps ecoulé entre les changements..

  17. #16
    sandrecarpe

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    Quand on ne met pas de parenthèses après un if en C ou C++, la portion de code exécutée si la condition est vérifiée est uniquement la ligne suivant le if
    Le compilateur ne voit donc pas ça comme une erreur

  18. #17
    nornand

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    sauf que contrairement a ce qui est écrit ce n'est pas un bug , c'est noté dans la doc de la fonction ! qui retourne un débordement du registre.

    ref: www.arduino.cc/en/Reference/Millis

    Reference Language | Libraries | Comparison | Changesmillis()

    Description

    Returns the number of milliseconds since the Arduino board began running the current program. This number will overflow (go back to zero), after approximately 50 days.

  19. #18
    freepicbasic

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    Citation Envoyé par sandrecarpe Voir le message
    Quand on ne met pas de parenthèses après un if en C ou C++, la portion de code exécutée si la condition est vérifiée est uniquement la ligne suivant le if
    Le compilateur ne voit donc pas ça comme une erreur
    il ne faut pas confondre parenthèses et accolades.

    if (condition) return;

    if (condition) { return; }

    if (condition) {
    return;
    }

    if (condition)
    {
    return;
    }
    A+, pat

  20. #19
    FatehNabil

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    voila exactement,comme il est indiqué dans la figure suivante, le temps que je le calculer.

    Nom : shéma.JPG
Affichages : 327
Taille : 28,7 Ko

    en fait, je veux calculer le temps dés que je déclenche le premier capteur qui se trouve initialement en état haut (=1) et le capteur 2 lors de son actionnement (initialemt le capteur 2 est en état bas =0).
    Il est clair que je dois utilisé dans mon code 2 variables pour stocker le temps de départ et le temps d'arrivée puis je fais la soustraction pour obtenir le temps écoulé.

  21. #20
    Yoruk

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    On t'a donné la solution page précédente... Tu as testé ?
    La robotique, c'est fantastique !

  22. #21
    sandrecarpe

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    Citation Envoyé par freepicbasic Voir le message
    il ne faut pas confondre parenthèses et accolades.
    Autant pour moi. J'ai lu et écrit "accolades"

  23. #22
    FatehNabil

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    Oui je l'ai testé mais il m'affiche des erreurs au niveau de serial.println(diff) car cette dernière n'est pas déclarée comme une variable.est ce que je dois remplacé serial.println(diff) par serial.println(time)??
    En fait, je vois que la variable diff ne sert à rien dans ce programme puisque nous allons affiché la varible time!!

  24. #23
    Yoruk

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    S'il manque une déclaration de variable, rien ne t'empêche de la rajouter...!

    A priori, il doit y avoir une erreur dans le programme donné par freepicbasic à la page précédente.
    La robotique, c'est fantastique !

  25. #24
    FatehNabil

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    voila j'ai modifié le code précédent et j'ai rajouté la variable diff qui calcule la différence entre le temps de départ et le temps d'arrivé.

    // définition des variables
    int capt1=7;
    int capt2=13;
    unsigned long t1,t2,diff;


    void setup() {

    Serial.begin(9600); // initialisation de la communication série à 9600 bauds
    pinMode(capt1,INPUT); //configure la broche 7 en entrée
    pinMode (capt2,INPUT); //configure la broche 13 en entrée

    }

    void loop()
    {
    Serial.print("Attend contact 1 ");
    while (digitalRead(7) == LOW) ;
    t1= millis(); //affiche sur le PC le temps depuis que le programme a démarré
    Serial.print("Contact 1 "); // affiche le texte dans la fenêtre Terminal côté PC

    while (digitalRead(13) == LOW);
    t2 = millis() - t1 ;
    Serial.println ("contact 2");
    diff=t2-t1;
    Serial.println(diff); // affiche le temps écoulé depuis que le programme a démarré
    delay(1000); // attend une seconde pour ne pas envoyer un trop grand nombre de donnée vers le PC
    j'ai déjà met dans la discussion le schéma de fonctionnement de deux capteurs qui précise l'instant ou il commence le calcule du temps (déclenchement du premier capteur) (état bas(low) ==0) et le l'instant d'arrivé (état haut ==1 du deuxième capteur ).
    ma question est ce que je dois modifié l'instruction suivante

    while (digitalRead(13) == LOW);
    et le met comme suit car il faut que le contact du capteur 2 soit actionné pour pouvoir calculer le temps.
    while (digitalRead(13) == HIGH );
    merci pour votre compréhension
    cordialement.

  26. #25
    freepicbasic

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    Apparemment dans le post #1, le contact semblait être sur la masse au repos et à + au travail.

    Mais si c'est le contraire donc LOW dans l'état actif , effectivement il faut changer le sens et tester HIGH.

    On test les états au repos While(étatRepos);
    pour bloquer le prog sur cette ligne , la suite sera exécutée lorsque la condition travail sera lue.
    A+, pat

  27. #26
    Yoruk

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    Ton calcul du temps est faux...

    Il n'y a rien qui te choque là ? Tu as juste une soustraction à faire !

    Code:
    t1= millis(); 
    t2 = millis() - t1 ;
    
    diff=t2-t1;
    La robotique, c'est fantastique !

  28. #27
    freepicbasic

    Re : [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino

    LOL la machine à remonter le temps "SGDG"

    Si le temps d'origine est plus long que le temps mesuré, tu as un résultat négatif en faisant 2 fois la soustraction du temps d'origine.
    A+, pat

Discussions similaires

  1. Programmation des capteurs de fin de course avec Arduino
    Par FatehNabil dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 18/03/2016, 20h43
  2. calculer de temps entre deux instructions
    Par malmou dans le forum Électronique
    Réponses: 0
    Dernier message: 27/05/2014, 08h51
  3. Différence entre ces deux capteurs IR ?
    Par SilenT612 dans le forum Électronique
    Réponses: 3
    Dernier message: 03/03/2014, 15h58
  4. problème entre deux capteurs de tensions.
    Par invite008696b9 dans le forum Électronique
    Réponses: 17
    Dernier message: 22/03/2013, 10h58
  5. Distance entre deux capteurs
    Par -GJ- dans le forum Électronique
    Réponses: 15
    Dernier message: 17/03/2008, 08h39
Découvrez nos comparatifs produits sur l'informatique et les technologies.