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
fonctions.h@2:c1a4641eeacf, 2022-02-17 (annotated)
- Committer:
- Giamarchi
- Date:
- Thu Feb 17 18:16:35 2022 +0000
- Revision:
- 2:c1a4641eeacf
- Child:
- 3:c75f8eddeaf4
Girouette
Who changed what in which revision?
User | Revision | Line number | New 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 | } |