Déterminer le temps d'exécution d'une fonction en langage Arduino.
Répondre à la discussion
Affichage des résultats 1 à 15 sur 15

Déterminer le temps d'exécution d'une fonction en langage Arduino.



  1. #1
    kaky951357

    Post Déterminer le temps d'exécution d'une fonction en langage Arduino.


    ------

    BONSOIR,
    Je suis un débutant en Arduino et je me demande est ce qu'il est possible d’exécuter une fonction (qui a été déclaré au par-avant ) pendant une durée de temps puis passer a une autre ainsi de suite.
    si oui donnez moi un petit exemple pour montrer la syntaxe.
    Merci beaucoup pour vos réponses.
    Cordialement.

    -----

  2. #2
    mkh.mourad

    Re : déterminer la durée d'execution d'une fonction en language arduino.

    je n'ai pas pu comprendre ce que tu veux exctement: fixer le temps d'exécution, ou déterminer la durée d'exécution d'une fonction?

    fixer le temp:
    Code:
    foo1();
    delay(1000); // delay d'une seconde
    foo2();
    delay(1000); // delay d'une seconde
    foo3();
    delay(1000); // delay d'une seconde
    determiner le temp:
    Code:
    int duree: = millis();
    foo();
    duree = millis() - duree;
    Serial.print(duree);

  3. #3
    kaky951357

    Re : déterminer la durée d'execution d'une fonction en language arduino.

    bonsoir
    Merci pour votre reponse
    exactement moi je veux déterminer le temps d'execution de la fonction merci pour votre rectification.
    STP j'ai pas bien comprit le code (le deuxième ) ou je doit mettre les paramètre de temps.
    et merci encore .

  4. #4
    Yoruk

    Re : déterminer la durée d'execution d'une fonction en language arduino.

    Le 2ème code te permet de chronométrer le temps nécessaire à l'exécution de la fonction foo(). millis() est une fonction interne de la arduino qui contient le nombre de millisecondes écoulées depuis la mise sous tension de la carte. Tu enregistres ce nombre (dans duree) avant l’exécution de la fonction, puis ensuite tu retires millis() à cette durée. La différence des 2 te donne le nombre de millisecondes écoulées pendant l'exécution de foo() !
    La robotique, c'est fantastique !

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

    Re : déterminer la durée d'execution d'une fonction en language arduino.

    Bonjour Yoruk,
    Pouvez vous me donner un exemple simple et concret que je pourrait exécuter sur le logiciel Arduino directement parce-que quand j’essaye d'appliquer sur mon code sa fonctionne pas :/ .
    Merci pour votre réponse et a bien tôt.

  7. #6
    Yoruk

    Re : Déterminer le temps d'exécution d'une fonction en langage Arduino.

    Le code de mkh.mourad est correct... Ne connaissant pas le tien, je ne peux rien faire de mieux. Poste le !
    Dernière modification par Cram 64 ; 29/07/2014 à 17h01. Motif: Titre.
    La robotique, c'est fantastique !

  8. #7
    kaky951357

    Re : Déterminer le temps d'exécution d'une fonction en langage Arduino.

    Bonsoir yoruk,
    Mon programme est destiné pour piloter un afficheur 2*7 segment il est un peux long (même tros).
    SVP pouvez vous me dit comment employer le code de mkh.Mourad car quand je met
    int duree: = millis(); dans l'entête de mon programme avec mes paramètre il affiche une erreur .
    SVP aidez moi

  9. #8
    mkh.mourad

    Re : Déterminer le temps d'exécution d'une fonction en langage Arduino.

    Merci Yoruk.
    @kaky:
    Comme t'as dit Yoruk, on ne peut rien faire pour t'aider si tu ne postes pas la portion de code que tu veux chronométrer le temp écoulé depuis le début jusqu'au sa fin.
    Code:
    void setup (){
        // tes initialisations hardware
    ..
    ..
    ..
    Serial.begin(9600);
    }
    
    unsigned long duree;
    void loop (){
    // la boucle principale
    ..
    ..
    ..
    // micros() est une fonction similaire à millis() sauf qu'elle compte des micro secondes au lieu des milli secondes
      duree = micros();  // ou millis suivant la grandeur du temps mesuré
      // ton code à mesurer
     ..
    ..
    ..
    // fin du code ciblé
      duree = micros() - duree;
    
      Serial.print("Temps écoulé:\t ");
      Serial.println(duree);
      // une petite pose pour ne pas saturer l'affichage dabs le terminal
      delay(1000);
    }

  10. #9
    Yoruk

    Re : Déterminer le temps d'exécution d'une fonction en langage Arduino.

    Tout est dit !

    A priori, tu n'as pas à mettre cela dans ton en tête. Si tu as encore des erreurs, indique nous lesquelles !
    La robotique, c'est fantastique !

  11. #10
    kaky951357

    Re : Déterminer le temps d'exécution d'une fonction en langage Arduino.

    Code:
    int c2=13;
    int c1=12;
    int led8=11;
    int led7=10;
    int led6=9;
    int led5=8;
    int led4=7;
    int led3=6;
    int led2=5;
    int led1=4;
    void setup ()
    {
    pinMode(led1,OUTPUT);
    pinMode(led2,OUTPUT);
    pinMode(led3,OUTPUT);
    pinMode(led4,OUTPUT);
    pinMode(led5,OUTPUT);
    pinMode(led6,OUTPUT);
    pinMode(led7,OUTPUT);
    pinMode(led8,OUTPUT);
    pinMode(c1,OUTPUT);
    pinMode(c2,OUTPUT);
    }
    void affiche01 (void)// la declaration de la fontion sible que je veux cronométrer
    {
      digitalWrite(c1,1);        
    digitalWrite(led1,0);
    digitalWrite(led2,1);
    digitalWrite(led3,1);
    digitalWrite(led4,0);
    digitalWrite(led5,0);
    digitalWrite(led6,0);
    digitalWrite(led7,0);
    delay(5);
    digitalWrite(c1,0);
    digitalWrite(led1,0);
    digitalWrite(led2,1);
    digitalWrite(led3,1);
    digitalWrite(led4,0);
    digitalWrite(led5,0);
    digitalWrite(led6,0);
    digitalWrite(led7,0);
    delay(5);
    digitalWrite(c2,1);
    digitalWrite(led1,1);
    digitalWrite(led2,1);
    digitalWrite(led3,1);
    digitalWrite(led4,1);
    digitalWrite(led5,1);
    digitalWrite(led6,1);
    digitalWrite(led7,0);
    delay(5);
    digitalWrite(c2,0);
    digitalWrite(led1,1);
    digitalWrite(led2,1);
    digitalWrite(led3,1);
    digitalWrite(led4,1);
    digitalWrite(led5,1);
    digitalWrite(led6,1);
    digitalWrite(led7,0);
    delay(5);
    }
    unsigned long duree;
    void loop ()
    {
     
      affiche01();
      //je veux que la fonction affiche01 s'execute durant 1s et passer a autre chause 
     digitalWrite(led1, HIGH);
     delay(1000);
     digitalWrite(led1, LOW);  
     delay(1000);
     }
    Bonjour;
    voila une petit portion de mon code car il est très très long que vous pourriez me donner exemple dessus.

  12. #11
    mkh.mourad

    Re : Déterminer le temps d'exécution d'une fonction en langage Arduino.

    c'est ca l'art d'Arduino, des fois il simplifie le code, mais le complique trop dans d'autres cas.
    tu as une fonction dédié pour l'affichage de "01"!! donc pour un affichage de 00 à 99 tu dois avoir une centaine de fonctions???.
    bon avant de chronométrer quoi que ce soit voici un code, tu le teste pour voir la différence. peut être que j'ai fais des erreurs a toi de les corriger.
    Code:
    #define c1 12  // cathode Commun 1
    #define c2 13  // cathode Commun 2
    #define led1 4 // segment a
    #define led2 5  // segment b
    #define led3 6  // segment c
    #define led4 7  // segment d
    #define led5 8  // segment e
    #define led6 9  // segment f
    #define led7 10  // segment g
    #define led8 11  // segment pd
    
    int digits[10][7] =
    { { 1, 1, 1, 1, 1, 1, 0 },   // = 0
      { 0, 1, 1, 0, 0, 0, 0 },   // = 1
      { 1, 1, 0, 1, 1, 0, 1 },   // = 2
      { 1, 1, 1, 1, 0, 0, 1 },   // = 3
      { 0, 1, 1, 0, 0, 1, 1 },   // = 4
      { 1, 0, 1, 1, 0, 1, 1 },   // = 5
      { 1, 0, 1, 1, 1, 1, 1 },   // = 6
      { 1, 1, 1, 0, 0, 0, 0 },   // = 7
      { 1, 1, 1, 1, 1, 1, 1 },   // = 8
      { 1, 1, 1, 0, 0, 1, 1 }   // = 9
    };
    
    unsigned long duree;
    
    // d est le digit a afficher: 0..9
    void digit(int d) {
      digitalWrite(led1, digits[d][0]);
      digitalWrite(led2, digits[d][1]);
      digitalWrite(led3, digits[d][2]);
      digitalWrite(led4, digits[d][3]);
      digitalWrite(led5, digits[d][4]);
      digitalWrite(led6, digits[d][5]);
      digitalWrite(led7, digits[d][6]);
    }
    
    // fonction qui affiche les deux digit en alternance entre les unités et les decimal
    void Affiche(int dec, int unit) {
      digit(unit);
      digitalWrite(c1, HIGH);
      delay(5);
      digitalWrite(c1, LOW);
      digit(dec);
      digitalWrite(c1, HIGH);
      delay(5);
      digitalWrite(c1, LOW);
    }
    
    void setup() {
      pinMode(led1, OUTPUT);
      pinMode(led2, OUTPUT);
      pinMode(led3, OUTPUT);
      pinMode(led4, OUTPUT);
      pinMode(led5, OUTPUT);
      pinMode(led6, OUTPUT);
      pinMode(led7, OUTPUT);
      pinMode(led8, OUTPUT);
      pinMode(c1, OUTPUT);
      pinMode(c2, OUTPUT);
      Serial.begin(9600);
    }
    
    
    void loop() {
      duree = millis();
      while ( (millis() - duree) < 1000) {
        Affiche(0, 1);  // affichage de "01" pendans une seconde.
      }
      duree = millis();
      while ( (millis() - duree) < 1000) {
        Affiche(0, 1);  // affichage de "10" pendans une seconde.
      }
    }

  13. #12
    kaky951357

    Re : Déterminer le temps d'exécution d'une fonction en langage Arduino.

    Bonjour,
    Merci beaucoup ça marche si l'arduino est un arc vous etes un artiste il y'a une petit erreur voici la correction
    pour : digits c'est un tableau si je comprend bien ?(en c) .
    SVP je comprend pas comment ton programme parvient a changer la valeur de la variable d.
    Code:
    #define c1 12  // cathode Commun 1
    #define c2 13  // cathode Commun 2
    #define led1 4 // segment a
    #define led2 5  // segment b
    #define led3 6  // segment c
    #define led4 7  // segment d
    #define led5 8  // segment e
    #define led6 9  // segment f
    #define led7 10  // segment g
    #define led8 11  // segment pd
    
    int digits[10][7] =
    { { 1, 1, 1, 1, 1, 1, 0 },   // = 0
      { 0, 1, 1, 0, 0, 0, 0 },   // = 1
      { 1, 1, 0, 1, 1, 0, 1 },   // = 2
      { 1, 1, 1, 1, 0, 0, 1 },   // = 3
      { 0, 1, 1, 0, 0, 1, 1 },   // = 4
      { 1, 0, 1, 1, 0, 1, 1 },   // = 5
      { 1, 0, 1, 1, 1, 1, 1 },   // = 6
      { 1, 1, 1, 0, 0, 0, 0 },   // = 7
      { 1, 1, 1, 1, 1, 1, 1 },   // = 8
      { 1, 1, 1, 0, 0, 1, 1 }   // = 9
    };
    
    unsigned long duree;
    
    // d est le digit a afficher: 0..9
    void digit(int d) {
      digitalWrite(led1, digits[d][0]);
      digitalWrite(led2, digits[d][1]);
      digitalWrite(led3, digits[d][2]);
      digitalWrite(led4, digits[d][3]);
      digitalWrite(led5, digits[d][4]);
      digitalWrite(led6, digits[d][5]);
      digitalWrite(led7, digits[d][6]);
    }
    
    // fonction qui affiche les deux digit en alternance entre les unités et les decimal
    void Affiche(int dec, int unit) {
      digit(unit);
      digitalWrite(c1, HIGH);
      delay(5);
      digitalWrite(c1, LOW);
      digit(dec);
      digitalWrite(c2, HIGH);
      delay(5);
      digitalWrite(c2, LOW);
      delay(5);
    }
    
    void setup() {
      pinMode(led1, OUTPUT);
      pinMode(led2, OUTPUT);
      pinMode(led3, OUTPUT);
      pinMode(led4, OUTPUT);
      pinMode(led5, OUTPUT);
      pinMode(led6, OUTPUT);
      pinMode(led7, OUTPUT);
      pinMode(led8, OUTPUT);
      pinMode(c1, OUTPUT);
      pinMode(c2, OUTPUT);
      Serial.begin(9600);
    }
    
    
    void loop() {
      duree = millis();
      while ( (millis() - duree) < 1000) {
        Affiche(0, 1);  // affichage de "01" pendans une seconde.
      }
      duree = millis();
      while ( (millis() - duree) < 1000) {
        Affiche(2, 1);  // affichage de "10" pendans une seconde.
      }
    }

  14. #13
    mkh.mourad

    Re : Déterminer le temps d'exécution d'une fonction en langage Arduino.

    Citation Envoyé par kaky951357 Voir le message
    Bonjour,
    pour : digits c'est un tableau si je comprend bien ?(en c) .
    digits est un tableau d'entier deux dimensions;

    Citation Envoyé par kaky951357 Voir le message
    Bonjour,
    SVP je comprend pas comment ton programme parvient a changer la valeur de la variable d.
    ???
    à chaque digits d correspond une liste d'état des segments de "a" à "g".
    pour le digit 0 (zéro) on a tous les segments sur ON sauf celle au milieu qui est le segment "g" donc on la représente comme ceci:
    a b c d e f g
    1 1 1 1 1 1 0

    le "2" s'écrit:
    a b c d e f g
    1 1 0 1 1 0 1

    cette série de zéros et des Uns sont enregistrés dans un tableau deux dimensions.

    la fonction digit cherche la correspondance de chaque chiffre dans le tableau et affecte les sorties de l'Arduino reliés à l'afficheur 7 segments.

  15. #14
    kaky951357

    Re : Déterminer le temps d'exécution d'une fonction en langage Arduino.

    voila j'ai comprit tu redéfinit une autre fonction qui est affiche() ou la variable d "se transforme" on unit et dec.
    merci beaucoup j'ai tout comprit

  16. #15
    mkh.mourad

    Re : Déterminer le temps d'exécution d'une fonction en langage Arduino.

    Pourquoi tu as mis un troisième delay(5) dans la fonction Affiche?
    C'est un gaspillage de temps. tu peux l'omettre et tu gagneras 5 précieuses milli secondes.

Discussions similaires

  1. Temps d'éxécution cycle PIC16F690
    Par As_Sh dans le forum Électronique
    Réponses: 1
    Dernier message: 21/05/2014, 10h10
  2. Temps d'exécution
    Par narakphysics dans le forum Programmation et langages, Algorithmique
    Réponses: 7
    Dernier message: 27/04/2013, 23h38
  3. Réponses: 0
    Dernier message: 24/03/2012, 22h08
  4. Temps d'execution d'une instruction d'un PIC
    Par invitea316b35d dans le forum Électronique
    Réponses: 8
    Dernier message: 03/04/2010, 20h01
  5. Comparaison de temps d'execution
    Par invite72c93427 dans le forum Mathématiques du collège et du lycée
    Réponses: 3
    Dernier message: 01/04/2010, 22h23
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...