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.
Dependencies: mbed
Revision 3:c75f8eddeaf4, committed 2022-03-02
- Comitter:
- Giamarchi
- Date:
- Wed Mar 02 22:28:23 2022 +0000
- Parent:
- 2:c1a4641eeacf
- Commit message:
- Station Meteo; Anemometre
Changed in this revision
fonctions.h | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/fonctions.h Thu Feb 17 18:16:35 2022 +0000 +++ b/fonctions.h Wed Mar 02 22:28:23 2022 +0000 @@ -3,52 +3,63 @@ // // Description de fonctions utilisées pour la station météo //============================================================================== +#include "mbed.h" // Déclaration des variables et des constantes - -// Tableau de correspondance des angles avec l'encodeur optique -const int16_t table[32] = { -1, 0, 72, 12,144,132, 84,120, - 216,348,204, 24,156,168,192,180, - 288,300, 60, 48,276,312, 96,108, - 228,336,240, 36,264,324,252, -1}; -DigitalIn B0(PB_4); // Encodeur bit de poids faible -DigitalIn B1(PB_5); -DigitalIn B2(PA_11); -DigitalIn B3(PA_8); -DigitalIn B4(PB_1); // Encodeur bit de poids fort +InterruptIn Anem(PB_4); // La ligne est déclarée en interruption +Timer Fenetre_Temps; // Déclaration d'un compteur + +uint16_t nombre; -DigitalOut CMD_LED_IR(PB_6); // Commande des 5 Leds infrarouges +void ISR_Compteur(void) // Fonction d'interruption (Interrupt Sub Routine) +{ + nombre++; // Compte le nombre de rotation de l'axe +} void Init_Fonctions(void) { -// B0.mode(PullUp); -// B1.mode(PullUp); -// B2.mode(PullUp); -// B3.mode(PullUp); -// B4.mode(PullUp); + Anem.mode(PullUp); // Activation résistance de Pullup + Fenetre_Temps.start(); // Déclenche le timer + Anem.rise(&ISR_Compteur); // Interruption sur front montant } //============================================================================== // Fonction : Girouette // Entrée : Pas de paramètres en entrée -// Sortie : Angle, multiple de 12° et -1 en cas d'erreur. +// Sortie : vitesse du vent en 16bits -int16_t Girouette (void) +int16_t Anemometre (void) { -uint16_t direction = 0; // variable initialisée à 0 -// Activation des 5 Leds infrarouges - CMD_LED_IR = 1; -// Délai pour laisser le temps aux aux Leds IR de s'activer - wait_us(50); -// Lecture de l'encodeur optique issu de la girouette - direction = B0; // Bit de poids faible à droite - direction |= (B1<<1); - direction |= (B2<<2); - direction |= (B3<<3); - direction |= (B4<<4); // Bit de poids fort en position 5 - direction = direction & 0b00011111; -// Résultat -> direction = 0b000 B4 B3 B2 B1 B0 -// Coupure des 5 Leds infrarouges - CMD_LED_IR = 0; -// Conversion en angle par lecture dans la table - return table[direction]; -} \ No newline at end of file +int16_t vit; // variable locale + + if(Fenetre_Temps.read_ms() > 1000) // Mesure d'une fréquence + { + vit = nombre/4; // Formule de conversion + nombre = 0; + Fenetre_Temps.reset(); + } + else + { + vit = -1; // Lecture non disponible + } + return vit; +} + +// Nucleo - L432KC + +// PA_9 Vin +// PA_10 Gnd +// NRST NRST +// Gnd 5V +// PA_12 PA_2 +// PB_0 PA_7 +// PB_7 PA_6 +// PB_6 PA_5 +// PB_1 PA_4 +// NC PA_3 +// NC PA_1 +// PA_8 PA_0 +// PA_11 Aref +// PB_5 3V3 +// PB_4 PB_3 + +
--- a/main.cpp Thu Feb 17 18:16:35 2022 +0000 +++ b/main.cpp Wed Mar 02 22:28:23 2022 +0000 @@ -3,9 +3,9 @@ // Initiation à la Programmation // Auteur : Frédéric Giamarchi -// Date : 3 fev. 2022 -// TP : Girouette -// Encodeur optique pour girouette +// Date : 3 mars 2022 +// TP : Anémomètre +// Lecture optique par interruption // Utilisation de fonctions décrites dans un fichier séparé //============================================================================== // Déclarations des ressources @@ -21,31 +21,26 @@ // Déclaration des variables char c; // variable de type caractère -float temp; // variable de type réel -int16_t angle; +float temp; // variable de type réel +int16_t vitesse; // variable de type 16 bits signée //============================================================================== // Début du Programme int main() // Fonction principale { Init_Fonctions(); // Exécute cette fonction - - pc.printf("\r\nFabLab TP Girouette\r\n\n"); - + pc.printf("\r\nFabLab TP Anemometre\r\n\n"); + //============================================================================== // Boucle Infinie while(1) { - wait(1.0); // Toutes les secondes + vitesse = Anemometre(); - angle = Girouette(); // Lecture de la girouette - if(angle == 0) - DEL = 1; // La girouette pointe vers le Nord - else - DEL = 0; - - pc.printf("Dir Vent : %d\n",angle); // Affiche l'angle sur Putty - + if(vitesse != -1) // Lecture disponible + { + pc.printf("Vit Vent : %d\n",vitesse); // Affichage sur Putty + } } // Fin du while(1) //============================================================================== } // Fin du Programme