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:
- 6:6da143aff561
- Parent:
- 5:79b5773e6764
- Child:
- 7:e9f5280d47b3
--- a/main.cpp Fri Jan 27 03:12:40 2017 +0000
+++ b/main.cpp Fri Jan 27 04:21:45 2017 +0000
@@ -16,16 +16,55 @@
uint8_t compteur = 0;
bool verifierSiStable = false;
+float echantillons1[5];
+float echantillons2[5];
+float seuil = 0.125;
+
// -------------------------------------------------------
// -------------------------------------------------------
void lecture_analog(void const *args) {
- while (true) {
- // synchronisation sur la période d'échantillonnage
- // lecture de l'étampe temporelle
- // lecture des échantillons analogiques
- // calcul de la nouvelle moyenne courante
- // génération éventuelle d'un événement
+ int i = 0;
+ float moyenne_passee1 = -1;
+ float moyenne_passee2 = -1;
+
+ while (true) {
+ // Synchronisation sur la période d'échantillonnage
+ Thread::signal_wait(0x1);
+
+ // Lecture des échantillons analogiques
+ float entreeanal_1 = ea_1.read();
+ float entreeanal_2 = ea_2.read();
+
+ echantillons1[i] = entreeanal_1;
+ echantillons2[i] = entreeanal_2;
+
+ 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;
+ //printf("moyenne courante = %f, moyenne passee = %f, variation = %f\n", moyenne_courante1, moyenne_passee1, std::abs(1 - (moyenne_courante1 / moyenne_passee1)));
+
+ if (moyenne_passee1 != -1) {
+ if ((std::abs(1 - (moyenne_courante1 / moyenne_passee1))) > seuil) {
+ // Génération éventuelle d'un événement
+ printf("La variation de la moyenne 1 depasse le seuil fixe\n");
+
+ }
+ }
+ if (moyenne_passee2 != -1) {
+ if ((std::abs(1 - (moyenne_courante2 / moyenne_passee2))) > seuil) {
+ // Génération éventuelle d'un événement
+ printf("La variation de la moyenne 2 depasse le seuil fixe\n");
+
+ }
+ }
+
+ moyenne_passee1 = moyenne_courante1;
+ moyenne_passee2 = moyenne_courante2;
+ i = 0;
+ }
}
}
@@ -33,14 +72,12 @@
while (true) {
// Synchronisation sur la période d'échantillonnage
Thread::signal_wait(0x1);
- led3 = !led3;
-
+
// Lecture des échantillons numériques
uint8_t entreenum_1 = en_1.read();
uint8_t entreenum_2 = en_2.read();
-
- printf("Valeur de entree numerique 1: %d\n", entreenum_1);
- printf("Valeur de entree numerique 2: %d\n", entreenum_2);
+ //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);
@@ -55,7 +92,7 @@
// Génération d'un évènement...
} else {
- printf("Entree numerique 1 est instable\n");
+ // Entree numerique 1 n'est pas stable
Thread::yield();
}
if (en_2 == 1 && entreenum_2 == en_2.read()) {
@@ -63,7 +100,7 @@
// Génération d'un évènement...
} else {
- printf("Entree numerique 2 est instable\n");
+ // Entre numerique 2 n'est pas stable
Thread::yield();
}
}
@@ -90,12 +127,10 @@
if (compteur % 2 == 0) {
// Entrées numériques échantillionnées à tous les 100 ms
- led1 = 1;
t1->signal_set(0x1);
} else if (compteur % 5 == 0) {
// Entrées analogiques échantillonnées à tous les 250 ms
- led2 = 1;
- t1->signal_set(0x1);
+ t2->signal_set(0x1);
}
if (compteur % 10 == 0) {
@@ -108,16 +143,16 @@
printf("Demarrage des taches...\n");
Thread t_lectureNum(lecture_num);
- Thread t_lectureAna(lecture_analog);
+ Thread t_lectureAnalog(lecture_analog);
Thread t_collection(collection);
t1 = &t_lectureNum;
- t2 = &t_lectureAna;
+ t2 = &t_lectureAnalog;
t3 = &t_collection;
// Initialisation du RTC
- ticker.attach(&alarm, 2);
- // ticker.attach(&alarm, 0.05);
+ //ticker.attach(&alarm, 2);
+ ticker.attach(&alarm, 0.05);
while(1) {}
}
\ No newline at end of file