FabLab Nîmes / Mbed 2 deprecated FabLab_Station_Meteo

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers anemo.h Source File

anemo.h

00001 //==============================================================================
00002 //  Fichier : anemo.h
00003 //  
00004 //  Description de fonctions utilisées pour la station météo
00005 //==============================================================================
00006 //              Déclaration des variables et des constantes
00007 
00008 InterruptIn  Anem(PB_4);                // La ligne est déclarée en interruption
00009 Timer Fenetre_Temps;                    // Déclaration d'un compteur
00010 Ticker Tick_Anemo;
00011 
00012 uint16_t nombre;
00013 int16_t vitesse_anemo;                          // vitesse anemometre
00014 uint8_t etat_anemo;
00015 uint8_t anemo_ok;
00016 
00017 void ISR_Compteur(void)                 // Fonction d'interruption (Interrupt Sub Routine)
00018 {
00019     nombre++;                           // Compte le nombre de rotation de l'axe
00020 }
00021 
00022 void Init_Anemo(void)
00023 {
00024     Anem.mode(PullUp);                  // Activation résistance de Pullup
00025     etat_anemo = 0;                     // Initialisation de la machine à états
00026     anemo_ok = 0;                       // Lecture non disponible
00027 }
00028 //==============================================================================
00029 //              Fonction : Gestion Anemometre
00030 //  Entrée : On Off de la tache
00031 //  Sortie : Pas de paramètre en sortie
00032 //  Interne: variable d'état et de mesure
00033 
00034 void Gestion_Anemometre (unsigned int val_anemo)
00035 {
00036     switch (etat_anemo)
00037     {
00038     case 0:         // Tache au repos
00039         if((val_anemo & 0x02) == 0x02)
00040             etat_anemo = 1;
00041         else
00042         {
00043             anemo_ok = 0;
00044             Fenetre_Temps.stop();              // Mettre à 0
00045             Anem.disable_irq();
00046         }
00047         break;
00048     case 1:
00049         Fenetre_Temps.start();              // Déclenche le timer
00050         Fenetre_Temps.reset();              // Mettre à 0
00051         Anem.rise(&ISR_Compteur);           // Interruption sur front montant
00052         Anem.fall(&ISR_Compteur);           // et sur front descendant
00053         Anem.enable_irq();
00054     
00055         etat_anemo = 2;
00056         break;
00057     case 2:
00058         if(Fenetre_Temps.read_ms() >= 1000)      // Mesure d'une fréquence
00059         {
00060             vitesse_anemo = nombre/2;       // Formule de conversion
00061             nombre = 0;
00062             Fenetre_Temps.stop();              // Mettre à 0
00063             etat_anemo = 3;
00064         }
00065         break;
00066     case 3:                                 // Lecture disponible
00067         anemo_ok = 1;
00068         etat_anemo = 0;
00069         break;
00070     default:
00071         etat_anemo = 0;
00072         break;    
00073     }
00074 }
00075 //==============================================================================
00076 //              Fonction : Lecture Anemometre
00077 //  Entrée : Pas de paramètres en entrée
00078 //  Sortie : vitesse anemometre
00079 //  Interne: variable d'état
00080 
00081 int Lecture_Anemometre(void)
00082 {
00083 int resultat;
00084 
00085     if (anemo_ok == 1)
00086     {
00087         resultat = vitesse_anemo;
00088         anemo_ok = 0;
00089     }
00090     else
00091     {
00092         resultat = 0;
00093     }
00094     return resultat;
00095 }
00096 //==============================================================================
00097 //  Nucleo - L031K6
00098 
00099 //  PA_9                    Vin
00100 //  PA_10                   Gnd
00101 //  NRST                    NRST
00102 //  Gnd                     5V
00103 //  PA_12                   PA_2
00104 //  PB_0                    PA_7
00105 //  PB_7                    PA_6
00106 //  PB_6                    PA_5
00107 //  PB_1                    PA_4
00108 //  NC                      PA_3
00109 //  NC                      PA_1
00110 //  PA_8                    PA_0
00111 //  PA_11                   Aref
00112 //  PB_5                    3V3
00113 //  PB_4                    PB_3
00114 
00115