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
Diff: fonctions.h
- Revision:
- 3:c75f8eddeaf4
- Parent:
- 2:c1a4641eeacf
--- 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 + +