App S5 / Mbed 2 deprecated S05APP2

Dependencies:   mbed mbed-rtos

Revision:
13:29991a8767fe
Parent:
12:b24f9818a9f0
Child:
14:3b72daf433fb
diff -r b24f9818a9f0 -r 29991a8767fe main.cpp
--- a/main.cpp	Fri Jan 27 21:27:44 2017 +0000
+++ b/main.cpp	Mon Jan 30 14:40:01 2017 +0000
@@ -1,6 +1,7 @@
 #include "mbed.h"
 #include "rtos.h"
-
+ 
+Serial pc(USBTX, USBRX); // tx, rx
 Ticker ticker;
 DigitalIn en_1(p15);
 DigitalIn en_2(p16);
@@ -12,6 +13,7 @@
 
 uint8_t compteur = 0;
 bool verifierSiStable = false;
+bool valeurs[2] = {0};
 float echantillons1[5];
 float echantillons2[5];
 float seuil = 0.125;
@@ -24,8 +26,7 @@
     float moyenne;       // Moyenne courante échantillonnée sur 5 échantillons successifs
 } mail_t;
 
-Semaphore semaphore(200);
-Mail<mail_t, 200> mail_box;
+Mail<mail_t, 50> mail_box;
 
 // -------------------------------------------------------
 // -------------------------------------------------------
@@ -67,13 +68,11 @@
             
             if (moyenne_passee1 != -1) {
                 if ((std::abs(1 - (moyenne_courante1 / moyenne_passee1))) > seuil) {
-                    semaphore.wait();
                     envoyer_mail(1, 19, moyenne_courante1); /*** Génération éventuelle d'un événement ***/
                 }
             }
             if (moyenne_passee2 != -1) {
                 if ((std::abs(1 - (moyenne_courante2 / moyenne_passee2))) > seuil) {
-                    semaphore.wait();
                     envoyer_mail(1, 20, moyenne_courante2); /*** Génération éventuelle d'un événement ***/
                 }
             }
@@ -95,25 +94,27 @@
         // printf("Valeur de entree numerique 1: %d\n", entreenum_1);
         // printf("Valeur de entree numerique 2: %d\n", entreenum_2);
         
-        /*** Lecture de l'étampe temporelle ***/
-        time_t t = std::time(NULL);
-        
         /*** Prise en charge du phénomène de rebond ***/
-        if (en_1 || en_2) {
+        if (en_1.read() != valeurs[0]) {
             verifierSiStable = true;
             Thread::signal_wait(0x2);
+            valeurs[0] = en_1.read();
             
-            if (en_1 == 1 && entreenum_1 == en_1.read()) {
-                semaphore.wait();
+            if (entreenum_1 == en_1.read()) {
                 envoyer_mail(0, 15, NULL); /*** Génération d'un évènement... ***/
             } 
-            if (en_2 == 1 && entreenum_2 == en_2.read()) {
-                semaphore.wait();
+      
+        } 
+        if (en_2.read() != valeurs[1]) {
+            verifierSiStable = true;
+            Thread::signal_wait(0x2);
+            valeurs[1] = en_2.read();
+            
+            if (entreenum_2 == en_2.read()) {
                 envoyer_mail(0, 16, NULL); /*** Génération d'un évènement... ***/
             } 
-        } else {
-            Thread::yield();
-        } 
+        }
+        Thread::yield(); 
     }
 }
 
@@ -126,13 +127,12 @@
             
             /*** Écriture de l'événement en sortie (port série) ***/
             if (mail->type == 0) {
-                printf("Une lecture a ete detectee sur l'entree numerique %d\nDate: %s\n", mail->broche, mail->temps);
+                pc.printf("Une lecture detectee entree numerique %d\nDate: %s\n", mail->broche, mail->temps);
             }         
             else {
-                printf("Une lecture a ete detectee sur l'entree analogique %d\nDate: %sLa moyenne courante est: %f\n\n", mail->broche, mail->temps, mail->moyenne); 
+                pc.printf("Une lecture detectee entree analogique %d\nDate: %sMoyenne courante: %f\n\n", mail->broche, mail->temps, mail->moyenne);
             }  
             mail_box.free(mail);
-            semaphore.release();
         } else {
             Thread::yield();
         }
@@ -160,8 +160,7 @@
 
 int main() {
     /*** Démarrage des tâches ***/
-    printf("Demarrage des taches...\n");
-
+    
     Thread t_lectureNum(lecture_num);
     Thread t_lectureAnalog(lecture_analog);
     Thread t_collection(collection);