App S5 / Mbed 2 deprecated S05APP2

Dependencies:   mbed mbed-rtos

Revision:
22:b837590f4fd0
Parent:
21:3b9a50b245f8
Child:
23:c0d34900d61d
--- a/main.cpp	Mon Jan 30 21:14:03 2017 +0000
+++ b/main.cpp	Tue Jan 31 18:39:59 2017 +0000
@@ -41,11 +41,10 @@
 
 void lecture_analog(void const *args) {
     uint8_t i = 0;
-    float moyenne_passee1 = -1;
-    float moyenne_passee2 = -1;
+    float moyenne_passee[2] = {-1, -1};
+    float moyenne_courante[2] = {0};
     float echantillons1[5];
     float echantillons2[5];
-    float seuil = 0.125;
     
     while (true) {        
         /*** Synchronisation sur la période d'échantillonnage ***/
@@ -61,35 +60,21 @@
         i++;
         if (i == 5) {
             /*** Calcul de la moyenne courante du signal (calculée sur  5 échantillons successifs) ***/
-            float moyenne_courante1 = (echantillons1[0] + echantillons1[1] + echantillons1[2] + echantillons1[3] + echantillons1[4]) / 5;
-            float moyenne_courante2 = (echantillons2[0] + echantillons2[1] + echantillons2[2] + echantillons2[3] + echantillons2[4]) / 5;
+            moyenne_courante[0] = (echantillons1[0] + echantillons1[1] + echantillons1[2] + echantillons1[3] + echantillons1[4]) / 5;
+            moyenne_courante[1] = (echantillons2[0] + echantillons2[1] + echantillons2[2] + echantillons2[3] + echantillons2[4]) / 5;
             
-            if (moyenne_passee1 != -1) {
-                if(moyenne_courante1 < moyenne_passee1) {
-                    if (1 - (moyenne_courante1 / moyenne_passee1)) > seuil) {
+            if (moyenne_passee[0] != -1) {
+                if (((moyenne_courante[0] < moyenne_passee[0]) && (1 - (moyenne_courante[0] / moyenne_passee[0]) > 0.125)) || (1 - (moyenne_passee[0] / moyenne_courante[0]) > 0.125)) {
                     envoyer_mail(19); /*** Génération éventuelle d'un événement ***/
-                    }
-                }
-                else {
-                    if (1 - (moyenne_passee1 / moyenne_courante1) > seuil) {
-                    envoyer_mail(19); /*** Génération éventuelle d'un événement ***/
-                    }
-                }     
+                }    
             }
-            if (moyenne_passee2 != -1) {
-                if(moyenne_courante2 < moyenne_passee2) {
-                    if (1 - (moyenne_courante2 / moyenne_passee2) > seuil) {
+            if (moyenne_passee[1] != -1) {
+                if (((moyenne_courante[1] < moyenne_passee[1]) && (1 - (moyenne_courante[1] / moyenne_passee[1]) > 0.125)) || (1 - (moyenne_passee[1] / moyenne_courante[1]) > 0.125)) {
                     envoyer_mail(20); /*** Génération éventuelle d'un événement ***/
-                    }
-                }
-                else {
-                    if (1 - (moyenne_passee2 / moyenne_courante2) > seuil) {
-                    envoyer_mail(20); /*** Génération éventuelle d'un événement ***/
-                    }
-                }     
+                }    
             }
-            moyenne_passee1 = moyenne_courante1;
-            moyenne_passee2 = moyenne_courante2;
+            moyenne_passee[0] = moyenne_courante[0];
+            moyenne_passee[1] = moyenne_courante[1];
             i = 0;
         }
     }
@@ -103,8 +88,8 @@
         Thread::signal_wait(0x1);
                 
         /*** Lecture des échantillons numériques ***/
-        uint8_t entreenum_1 = en_1.read();
-        uint8_t entreenum_2 = en_2.read();
+        bool entreenum_1 = en_1.read();
+        bool entreenum_2 = en_2.read();
         
         /*** Prise en charge du phénomène de rebond ***/
         if (entreenum_1 != valeurs[0]) {
@@ -137,7 +122,7 @@
             mail_t *mail = (mail_t*)evt.value.p;
             
             /*** Écriture de l'événement en sortie (port série) ***/
-            pc.printf("Entree %d\nDate: %s\n", mail->broche, mail->temps);
+            pc.printf("%d: Date: %s\n", mail->broche, mail->temps);
             mail_box.free(mail);
         } 
     }
@@ -164,7 +149,6 @@
 
 int main() {
     /*** Démarrage des tâches ***/
-
     Thread t_lectureNum(lecture_num);
     Thread t_lectureAnalog(lecture_analog);
     Thread t_collection(collection);