FabLab Nîmes / Mbed 2 deprecated FabLab_Anemometre

Dependencies:   mbed

Committer:
Giamarchi
Date:
Thu Feb 17 18:16:35 2022 +0000
Revision:
2:c1a4641eeacf
Child:
3:c75f8eddeaf4
Girouette

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Giamarchi 2:c1a4641eeacf 1 //==============================================================================
Giamarchi 2:c1a4641eeacf 2 // Fichier : fonctions.h
Giamarchi 2:c1a4641eeacf 3 //
Giamarchi 2:c1a4641eeacf 4 // Description de fonctions utilisées pour la station météo
Giamarchi 2:c1a4641eeacf 5 //==============================================================================
Giamarchi 2:c1a4641eeacf 6 // Déclaration des variables et des constantes
Giamarchi 2:c1a4641eeacf 7
Giamarchi 2:c1a4641eeacf 8 // Tableau de correspondance des angles avec l'encodeur optique
Giamarchi 2:c1a4641eeacf 9 const int16_t table[32] = { -1, 0, 72, 12,144,132, 84,120,
Giamarchi 2:c1a4641eeacf 10 216,348,204, 24,156,168,192,180,
Giamarchi 2:c1a4641eeacf 11 288,300, 60, 48,276,312, 96,108,
Giamarchi 2:c1a4641eeacf 12 228,336,240, 36,264,324,252, -1};
Giamarchi 2:c1a4641eeacf 13
Giamarchi 2:c1a4641eeacf 14 DigitalIn B0(PB_4); // Encodeur bit de poids faible
Giamarchi 2:c1a4641eeacf 15 DigitalIn B1(PB_5);
Giamarchi 2:c1a4641eeacf 16 DigitalIn B2(PA_11);
Giamarchi 2:c1a4641eeacf 17 DigitalIn B3(PA_8);
Giamarchi 2:c1a4641eeacf 18 DigitalIn B4(PB_1); // Encodeur bit de poids fort
Giamarchi 2:c1a4641eeacf 19
Giamarchi 2:c1a4641eeacf 20 DigitalOut CMD_LED_IR(PB_6); // Commande des 5 Leds infrarouges
Giamarchi 2:c1a4641eeacf 21
Giamarchi 2:c1a4641eeacf 22 void Init_Fonctions(void)
Giamarchi 2:c1a4641eeacf 23 {
Giamarchi 2:c1a4641eeacf 24 // B0.mode(PullUp);
Giamarchi 2:c1a4641eeacf 25 // B1.mode(PullUp);
Giamarchi 2:c1a4641eeacf 26 // B2.mode(PullUp);
Giamarchi 2:c1a4641eeacf 27 // B3.mode(PullUp);
Giamarchi 2:c1a4641eeacf 28 // B4.mode(PullUp);
Giamarchi 2:c1a4641eeacf 29 }
Giamarchi 2:c1a4641eeacf 30 //==============================================================================
Giamarchi 2:c1a4641eeacf 31 // Fonction : Girouette
Giamarchi 2:c1a4641eeacf 32 // Entrée : Pas de paramètres en entrée
Giamarchi 2:c1a4641eeacf 33 // Sortie : Angle, multiple de 12° et -1 en cas d'erreur.
Giamarchi 2:c1a4641eeacf 34
Giamarchi 2:c1a4641eeacf 35 int16_t Girouette (void)
Giamarchi 2:c1a4641eeacf 36 {
Giamarchi 2:c1a4641eeacf 37 uint16_t direction = 0; // variable initialisée à 0
Giamarchi 2:c1a4641eeacf 38 // Activation des 5 Leds infrarouges
Giamarchi 2:c1a4641eeacf 39 CMD_LED_IR = 1;
Giamarchi 2:c1a4641eeacf 40 // Délai pour laisser le temps aux aux Leds IR de s'activer
Giamarchi 2:c1a4641eeacf 41 wait_us(50);
Giamarchi 2:c1a4641eeacf 42 // Lecture de l'encodeur optique issu de la girouette
Giamarchi 2:c1a4641eeacf 43 direction = B0; // Bit de poids faible à droite
Giamarchi 2:c1a4641eeacf 44 direction |= (B1<<1);
Giamarchi 2:c1a4641eeacf 45 direction |= (B2<<2);
Giamarchi 2:c1a4641eeacf 46 direction |= (B3<<3);
Giamarchi 2:c1a4641eeacf 47 direction |= (B4<<4); // Bit de poids fort en position 5
Giamarchi 2:c1a4641eeacf 48 direction = direction & 0b00011111;
Giamarchi 2:c1a4641eeacf 49 // Résultat -> direction = 0b000 B4 B3 B2 B1 B0
Giamarchi 2:c1a4641eeacf 50 // Coupure des 5 Leds infrarouges
Giamarchi 2:c1a4641eeacf 51 CMD_LED_IR = 0;
Giamarchi 2:c1a4641eeacf 52 // Conversion en angle par lecture dans la table
Giamarchi 2:c1a4641eeacf 53 return table[direction];
Giamarchi 2:c1a4641eeacf 54 }