Lab7

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /*
00002  * Le 9 decembre 2019
00003  * Bruno St-Georges et Nicolas Brochu
00004  * Instrumentation en systemes ordines
00005  * 
00006  * Laboratoire 7 - Mesure du pouls
00007  * Ce programme permet de mesurer un pouls a partir d'un capteur APDS-9008 et d'une DEL ultrabrillante verte.
00008  * Un montage d'ampli op doit etre realise afin d'obtenir des valeurs de tensions reparties sur l'echelle 0-5V
00009  * a partir de la sortie du capteur.
00010  *
00011  * LPC1768
00012  * Connexions externes:
00013  * Broche 16 - Sortie du montage d'ampli op
00014  *
00015  */
00016 
00017 #include "mbed.h"
00018 
00019 // Definition des broches
00020 AnalogIn heartbeat(p16);
00021 DigitalOut LED(LED1);      
00022 DigitalOut DEL(LED2);      
00023 
00024 // Port serie 
00025 Serial pc(USBTX, USBRX); // tx, rx
00026 
00027 // Timer du temps de battement
00028 Timer t;
00029 
00030 // Declaration des variables globales
00031 float temps,tension,bpm;
00032 int bcounter;   // Compteur de battement
00033 
00034 // Programme principal
00035 int main() {
00036     
00037     pc.printf("\n\rDemarrage du systeme");
00038     
00039     while(1) {
00040         tension = heartbeat.read() * 3.3;
00041         if(tension > 2.2){              // Detection d'un battement
00042             t.start();
00043             while(tension > 1.9){       // hysteresis
00044                 tension = heartbeat.read() * 3.3;
00045             }
00046             while(tension < 2.2){       // attente du prochain battement
00047                 tension = heartbeat.read() * 3.3;
00048             }
00049             bcounter++;
00050         }   
00051         if(bcounter == 5){          // Pour moyenne sur 5 battements de coeur
00052             bcounter = 0;       
00053             temps = t.read();       // mesure du temps pris pour 5 battements
00054             bpm = 5 * 60 / temps;   // Conversion en bpm: * 5 provient de la division du denominateur par 5
00055             t.reset();              // Remise a zero du timer
00056             t.stop();
00057             pc.printf("\n\r%1.0f",bpm);     
00058         }
00059     }
00060 }