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 :

Comprendre un programme arduino


Sujet :

Arduino

  1. #1
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Par défaut Comprendre un programme arduino
    Bonsoir, j'ai commandé un capteur cardiaque dont j'ai pu m'approprier le programme suivant afin d'utiliser ce capteur avec l'arduino, le soucis étant que j'aimerais comprendre les tâches réalisés et surtout les intervalles de temps de prise de mesure sauf que je ne connais rien à ce langage. Pouvez-vous m'expliquer ce qu'il se passe dans ce programme, s'il-vous-plait ?

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
        // Function: This program can be used to measure heart rate, the lowest pulse in the program be set to 30.
        //         Use an external interrupt to measure it.
        // Hardware: Grove - Ear-clip Heart Rate Sensor, Grove - Base Shield, Grove - LED
        // Arduino IDE: Arduino-1.0
        // Author: FrankieChu       
        // Date: Jan 22, 2013
        // Version: v1.0
        // by <a href="http://www.seeedstudio.com" target="_blank">www.seeedstudio.com</a>
        #define LED 4//indicator, Grove - LED is connected with D4 of Arduino
        boolean led_state = LOW;//state of LED, each time an external interrupt 
                                        //will change the state of LED
        unsigned char counter;
        unsigned long temp[21];
        unsigned long sub;
        bool data_effect=true;
        unsigned int heart_rate;//the measurement result of heart rate
     
        const int max_heartpluse_duty = 2000;//you can change it follow your system's request.
                                //2000 meams 2 seconds. System return error 
                                //if the duty overtrip 2 second.
        void setup()
        {
            pinMode(LED, OUTPUT);
            Serial.begin(9600);
            Serial.println("Please ready your chest belt.");
            delay(5000);
            arrayInit();
            Serial.println("Heart rate test begin.");
            attachInterrupt(0, interrupt, RISING);//set interrupt 0,digital port 2
        }
        void loop()
        {
            digitalWrite(LED, led_state);//Update the state of the indicator
        }
        /*Function: calculate the heart rate*/
        void sum()
        {
         if(data_effect)
            {
              heart_rate=1200000/(temp[20]-temp[0]);//60*20*1000/20_total_time 
              Serial.print("Heart_rate_is:\t");
              Serial.println(heart_rate);
            }
           data_effect=1;//sign bit
        }
        /*Function: Interrupt service routine.Get the sigal from the external interrupt*/
        void interrupt()
        {
            temp[counter]=millis();
            Serial.println(counter,DEC);
            Serial.println(temp[counter]);
            switch(counter)
            {
                case 0:
                    sub=temp[counter]-temp[20];
                    Serial.println(sub);
                    break;
                default:
                    sub=temp[counter]-temp[counter-1];
                    Serial.println(sub);
                    break;
            }
            if(sub>max_heartpluse_duty)//set 2 seconds as max heart pluse duty
            {
                data_effect=0;//sign bit
                counter=0;
                Serial.println("Heart rate measure error,test will restart!" );
                arrayInit();
            }
            if (counter==20&&data_effect)
            {
                counter=0;
                sum();
            }
            else if(counter!=20&&data_effect)
            counter++;
            else 
            {
                counter=0;
                data_effect=1;
            }
     
        }
        /*Function: Initialization for the array(temp)*/
        void arrayInit()
        {
            for(unsigned char i=0;i < 20;i ++)
            {
                temp[i]=0;
            }
            temp[20]=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
    bonsoir,

    qu'est-ce que tu ne comprends pas ? Le programme est commenté et la documentation des fonctions se trouve sur le site https://www.arduino.cc/

  3. #3
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Par défaut
    Citation Envoyé par Auteur Voir le message
    bonsoir,

    qu'est-ce que tu ne comprends pas ? Le programme est commenté et la documentation des fonctions se trouve sur le site https://www.arduino.cc/


    Je m'y suis renseigner sur ce liens mais c'est en anglais donc je ne suis pas sûre de comprendre grand chose (les sites de traduction ne sont pas toujours fiables), j'ai cru comprendre le système en gros mais je ne suis vraiment pas sûre de ce que j'ai compris :
    J'ai fait un algorithme du fonctionnement que j'ai compris que j'ai mis en pièce jointe. Pouvez vous me dire si cela correspond ?
    Ps : Je n'ai pas respecté les variables du programme, voilà mes variables :

    " Soit i le nombre de pulsation mesuré pour une boucle
    Soit valeur_pouls l’intensité du pouls mesuré
    Soit la variable temps
    Soit rythme_cardique la valeur du rythme cardiaque calculé "

    J'aimerais juste savoir si le fonctionnement est le même
    Merci, bonne soirée

    Nom : algo.png
Affichages : 742
Taille : 54,1 Ko

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 197
    Billets dans le blog
    47
    Par défaut
    Bonjour,

    En gros...

    A chaque pulsation (interruption 0), le temps est relevé et stocké dans un tableau : temp[0] pour la première pulsation, temp[1] pour la deuxième, etc.

    Au bout de 20 pulsations, il calcule le nombre de pulsations/min comme on connait la durée pour faire les 20 pulsations : temp[20]-temp[0].

    S'il y a plus de 2 secondes écoulées entre deux pulsations (le gars est couic), il affiche une erreur et repart pour 20 pulsations.

  5. #5
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Par défaut
    Merci beaucoup f-leb c'est surtout au niveau du temps que je n'avais pas compris mais maintenant c'est clair merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comprendre ce programme
    Par diamentelle dans le forum Windows Forms
    Réponses: 5
    Dernier message: 08/04/2009, 15h33
  2. Comprendre un programme Matlab?
    Par nejm59 dans le forum MATLAB
    Réponses: 22
    Dernier message: 12/12/2008, 20h32
  3. Comprendre un programme
    Par Konala dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 27/10/2008, 12h21
  4. Comprendre un programme C simple décompilé
    Par _jeez_ dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 07/10/2007, 16h06
  5. Réponses: 1
    Dernier message: 25/08/2007, 23h14

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