Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- 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);